博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式:适配器
阅读量:6971 次
发布时间:2019-06-27

本文共 1851 字,大约阅读时间需要 6 分钟。

hot3.png

现在,要实现一只鸭子和一只火鸡沟通。

public class DuckTestDrive {   public static void main(String[] args) {        //首先,获得一个野鸭。      MallardDuck duck = new MallardDuck();        //然后获得一直火鸡      WildTurkey turkey = new WildTurkey();        //新建一个火鸡和鸭子的适配器      Duck turkeyAdapter = new TurkeyAdapter(turkey);      System.out.println("The Turkey says...");      turkey.gobble();      turkey.fly();      System.out.println("\nThe Duck says...");      testDuck(duck);      System.out.println("\nThe TurkeyAdapter says...");        //由此火鸡说的话鸭子就听得懂了,然后鸭子的话目前火鸡还不懂,需要重新写个鸭子的适配器。      testDuck(turkeyAdapter);   }   static void testDuck(Duck duck) {      duck.quack();      duck.fly();   }}
public interface Duck {   public void quack();   public void fly();}
public class DuckAdapter implements Turkey {   Duck duck;   Random rand;    public DuckAdapter(Duck duck) {      this.duck = duck;      rand = new Random();   }    //适配器做的事情就是兼容两种不同的叫声,当火鸡咕咕叫的时候适配器把它转化成呱呱叫。   public void gobble() {      duck.quack();   }     public void fly() {      if (rand.nextInt(5)  == 0) {           duck.fly();      }   }}
public class MallardDuck implements Duck {   public void quack() {      System.out.println("Quack");   }    public void fly() {      System.out.println("I'm flying");   }}
public interface Turkey {   public void gobble();   public void fly();}
public class TurkeyAdapter implements Duck {   Turkey turkey;    public TurkeyAdapter(Turkey turkey) {      this.turkey = turkey;   }       public void quack() {      turkey.gobble();   }     public void fly() {      for(int i=0; i < 5; i++) {         turkey.fly();      }   }}
public class WildTurkey implements Turkey {   public void gobble() {      System.out.println("Gobble gobble");   }    public void fly() {      System.out.println("I'm flying a short distance");   }}

转载于:https://my.oschina.net/marjeylee/blog/806724

你可能感兴趣的文章
理解ORACLE数据库字符集
查看>>
Top Coder算法题目浏览器
查看>>
为SharePoint 2016 配置SQL 2016的always on 模式(二)
查看>>
PHP 选择排序法
查看>>
使用css3做立体效果!
查看>>
CIO的管理经
查看>>
ssh故障解决一例
查看>>
linux学习笔记-第十一课-shell基础
查看>>
当Ctrl+Alt+Del失效时,你需要用net user 来改密码
查看>>
C++的变量作用域
查看>>
ES搭建
查看>>
长sql与sql执行进度
查看>>
Java命名规范
查看>>
Openwrt通过tc,iptalbes限速
查看>>
get_hard_info.sh
查看>>
从0开始
查看>>
腾讯网络技术TGW
查看>>
Windows Server入门系列之十二 进程管理
查看>>
搭建DHCP服务器
查看>>
Linux的watch命令 — 实时监测命令的运行结果
查看>>