HeadFirst设计模式_读书笔记_007_外观模式

来源:互联网 发布:apache不解析php7文件 编辑:程序博客网 时间:2024/05/21 09:24

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口或者一个很大的接口,总之外观模式的目的是简化并统一其他的接口。与适配器不同的是,它不会修改其他的接口,只是将客户从一个复杂的子系统中解耦出来。



 

public class Airconditioner {int tempture;public void turnOn(){System.out.println("开空调");}public void turnOff(){System.out.println("关掉空调");}public void setTempture(int tempture){this.tempture = tempture;}}

 

public class Fridge {int level ; public void turnOn(){System.out.println("冰箱插上电源");}public void turnOff(){System.out.println("关掉冰箱");}public void setLevel(int level){this.level = level;}public int getLevel(){return level;}}

 

public class TV {public void turnOn(){System.out.println("打开电视");}public void turnOff(){System.out.println("关掉电视");}public void showCCTV(){System.out.println("收看央视新闻");}}

 

public class  HomeElectronicsController {TV tv;Fridge fridge;Airconditioner airconfitioner;public HomeElectronicsController(TV tv, Fridge fridge, Airconditioner airconditioner){this.tv = tv;this.fridge = fridge;this.airconfitioner = airconditioner;}public void turnOnAll(){tv.turnOn();tv.showCCTV();fridge.setLevel(3);airconfitioner.setTempture(28);}public void turnOffAll(){tv.turnOff();fridge.turnOff();airconfitioner.turnOff();}}

 

当用户需要打开所有家电的时候,只需要调用HomeElectronicsController的turnOn()方法,而无需调用各个家电,但是外观模式并没有改变各个家电的接口,只是简化了用户的访问。如果用户需要访问子系统中的各个组件,还是可以直接访问的。这是外观模式和适配器模式最大的区别。

  • 大小: 3.4 KB
  • 查看图片附件
0 0
原创粉丝点击