外观模式(Facade Pattern)——随遇而安
2017-08-20 23:43
274 查看
前言
俗话说得好,随着人类的进步,社会的发展(土土的小学生用语),家庭影院已经进入普通家庭。那么如何构建一个集中管理的家庭影院软件系统呢?注意家庭影院需要做很多有趣的事情哦,比如内含DVD播放器,投影仪,自动屏幕,环绕立体声等。。。 当当当,外观模式闪亮登场(QAQ)。。。
概述
定义
外观模式(Facade Pattern)提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 外观模式允许我们让客户和子系统之间避免紧耦合,而且遵循“最少知识”原则
”最少知识“原则:只和你的密友谈话。也就是说,当你正在设计一个系统,不管是任何对象,你都要注意它所交互的类有哪些,并注意它和这些类是如何交互的。
类图
Facade:外观角色
设计模式的实现
背景
背景就是前言中提到的,实现家庭影院。现在,我需要实现对投影仪,空调,屏幕和灯的控制。这里我们只实现对投影仪和屏幕的控制。代码实现
package Facade; /** * 子系统——投影仪 * Created by ChongLou on 2017/8/20. */ public class Projector { public void on() { System.out.println("打开了投影仪。。。"); } public void off() { System.out.println("关闭了投影仪"); } }
package Facade; /** * 子系统——屏幕 * Created by ChongLou on 2017/8/20. */ public class Screen { public void on() { System.out.println("打开了屏幕"); } public void off() { System.out.println("关闭了屏幕"); } }
package Facade; /** * 家庭影院外观 * Created by ChongLou on 2017/8/20. */ public class HomeTheaterFacade { Projector projector; Screen screen; public HomeTheaterFacade(Projector projector, Screen screen) { this.projector = projector; this.screen = screen; } public void on(){ projector.on(); screen.on(); } public void off(){ screen.on(); projector.on(); } }
package Facade; /** * 客户端 * Created by ChongLou on 2017/8/20. */ public class Client { public static void main(String[] args) { Projector projector = new Projector(); Screen screen = new Screen(); HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade(projector, screen); homeTheaterFacade.on(); System.out.println("家庭影院已经打开"); homeTheaterFacade.off(); System.out.println("家庭影院已经关闭"); } }
运行结果
总结
外观将客户从一个复杂的子系统中解耦。实现一个外观,需要将子系统组合禁外观中,然后将工作委托给子系统执行。
适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。
相关文章推荐
- 【JAVA设计模式】外观模式(Facade Pattern)
- 设计模式——外观模式(FacadePattern)
- 外观模式(facade pattern)(看电影)
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
- 设计模式之外观模式(Facade Pattern)
- Java实现(11)——外观模式(Facade Pattern)
- java_设计模式_外观模式_Facade Pattern(2016-08-09)
- 外观模式/ 门面模式(Facade Pattern)
- 结构型模式之适配器模式(Adapter Pattern)与外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- 结构型模式:外观模式(Facade Pattern)
- 23种设计模式-外观模式(Facade Pattern)
- Java设计模式——外观模式(Facade Pattern)
- 设计模式-外观模式(Facade Pattern)
- 《Head First Design Patterns》笔记八:外观模式(Facade Pattern)
- 设计模式【外观模式Facade Pattern】
- 极速理解设计模式系列:13.外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- 设计模式学习--适配器模式(Adapter Pattern)+外观模式(Facade Pattern)
- 【JAVA设计模式】外观模式(Facade Pattern)