结构型模式之四——外观模式
来源:互联网 发布:东芝收购西屋 知乎 编辑:程序博客网 时间:2024/06/06 20:57
模式定义
外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是一种对象结构型模式。
模式结构
模式结构如下图所示:
Facade
在客户端可以调用这个角色的方法,在外观角色中可以知道相关的子系统的功能和责任;在正常情况下,它将所有客户端发来的请求委派到相应的子系统中去,传递给相应的子系统对象处理。SusSystem
在软件系统中可以同时有一个或多个子系统角色,每一个子系统可以不是一个单独的类,而是类的集合,它实现子系统的功能;每一个子系统都可以被客户端直接调用,或者被外观角色调用,它处理由外观类传来的请求;子系统并不知道外观的存在,对于子系统而言,外观仅仅是另一个客户端而已。
实例
为了使用方便,一个电源总开关可以控制四盏灯、一台电视机和一台空调的启动和关闭。通过该电源总开关可以同时控制所有上述电器设备,使用外观模式设计该系统。
该实例类图如下所示:
public class Light { private int no; public Light(int no) { this.no = no; } public void on() { System.out.println(this.no + "灯打开"); } public void off() { System.out.println(this.no + "灯关闭"); }}public class AirConditional { public void on() { System.out.println("空调打开"); } public void off() { System.out.println("空调关闭"); }}public class Television { public void on() { System.out.println("电视打开"); } public void off() { System.out.println("电视关闭"); }}public class GeneralSwitchFacade { private Light linght[] = new Light[4]; private AirConditional ac; private Television tv; public GeneralSwitchFacade() { light[0] = new Light(1); light[1] = new Light(2); light[2] = new Light(3); light[3] = new Light(4); ac = new AirConditional(); tv = new Television(); } public void on() { light[0].on(); light[1].on(); light[2].on(); light[3].on(); ac.on(); tv.on(); } public void off() { light[0].off(); light[1].off(); light[2].off(); light[3].off(); ac.off(); tv.off(); }}public class Client { public static void main(String[] args) { GeneralSwitchFacade gsf = new GeneralSwitchFacade(); gsf.on(); gsf.off(); }}
0 0
- 结构型模式之四——外观模式
- 外观模式Facade--结构型模式之四
- 外观模式——结构型设计模式之五
- 结构型之外观模式
- 设计模式-结构型之外观模式
- 结构型模式之外观模式
- 结构型模式之外观模式
- 结构型模式之外观模式实现
- 结构型模式之外观模式
- 设计模式11——结构型模式之外观模式
- 结构型模式-外观
- 外观模式(结构型)
- 外观模式(结构型)
- (结构型模式)FACADE——外观模式
- 外观模式——对象结构型模式
- java结构型设计模式——外观模式
- java语言实现结构型设计模式—外观模式
- JAVA设计模式(9) —<结构型>外观模式(Facade)
- 【Objective-C】空指针和野指针
- php解决key没有双引号的问题
- TCP/IP网络编程 基于Linux编程_3 --优于select的epoll
- JS日期时间类型(Y-m-d H:i:s)与时间戳互转
- decorView和window之间的层级及关系
- 结构型模式之四——外观模式
- 观察变量值修改的位置
- java动态代理(JDK和cglib)
- BZOJ 1006 [HNOI2008]神奇的国度 弦图的最小染色
- Android Drawable 那些不为人知的高效用法
- 获取当前时间并转为string
- 80x86保护模式(1)
- 欢迎使用CSDN-markdown编辑器
- onAttachedToWindow()在整个Activity生命周期的位置及使用