HeadFirst设计模式_读书笔记_007_外观模式 博客分类: 2.Java设计模式 java外观模式
程序员文章站
2024-03-18 13:18:40
...
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口或者一个很大的接口,总之外观模式的目的是简化并统一其他的接口。与适配器不同的是,它不会修改其他的接口,只是将客户从一个复杂的子系统中解耦出来。
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()方法,而无需调用各个家电,但是外观模式并没有改变各个家电的接口,只是简化了用户的访问。如果用户需要访问子系统中的各个组件,还是可以直接访问的。这是外观模式和适配器模式最大的区别。
推荐阅读
-
HeadFirst设计模式_读书笔记_007_外观模式 博客分类: 2.Java设计模式 java外观模式
-
HeadFirst设计模式_读书笔记_006_适配器模式 博客分类: 2.Java设计模式 java适配器模式
-
HeadFirst设计模式_读书笔记_008_模板方法 博客分类: 2.Java设计模式 java模板方法模式
-
装饰者模式--除继承外的另一种扩展方式 博客分类: 设计模式 android设计模式装饰者模式java.io
-
代理模式 博客分类: Java设计模式 Java设计模式
-
模板方法模式 博客分类: Java设计模式 java设计模式
-
模板方法模式 博客分类: Java设计模式 java设计模式
-
策略模式 博客分类: Java设计模式 java设计模式
-
单例模式 博客分类: Java设计模式 Java设计模式
-
策略模式 博客分类: Java设计模式 java设计模式