结构型设计模式-外观模式
2017-03-02 18:04
288 查看
外观设计模式:Facade
作用:
为子系统中的一组接口提供一个一致的界面,外观提供的功能由多个子系统组合实现,客户端访问外观时并不知道功能的具体实现,从而实现子系统的隐蔽,同时外观提供的功能由子系统组合提供,方便子系统的功能升级
外观设计模式参与角色:
外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求任务分配给相应的子系统,外观负责整体功能流程的把控
子系统类集合(SubSystem Classes):子系统类集合实现了子系统的功能,处理外观类对象指派的任务
抽象外观角色:AbstractFacade
具体外观类:
子系统集合:
测试代码:
结果:
外观模式总结:
对客户隐藏目标功能的具体实现,而是通过一个外观类提供访问目标功能的接口,内部通过组合子系统的部分功能去满足客户需求
作用:
为子系统中的一组接口提供一个一致的界面,外观提供的功能由多个子系统组合实现,客户端访问外观时并不知道功能的具体实现,从而实现子系统的隐蔽,同时外观提供的功能由子系统组合提供,方便子系统的功能升级
外观设计模式参与角色:
外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求任务分配给相应的子系统,外观负责整体功能流程的把控
子系统类集合(SubSystem Classes):子系统类集合实现了子系统的功能,处理外观类对象指派的任务
抽象外观角色:AbstractFacade
public interface AbstractFacade { /** * 关闭机器 */ public void closeMachine(); /** * 打开机器 */ public void openMachine(); }
具体外观类:
public class ConcreteFacade implements AbstractFacade { private SubSystem02 subSystem01 = null; private SubSystem01 subSystem02 = null; private SubSystem03 subSystem03 = null; public ConcreteFacade() { this.subSystem01 = new SubSystem02(); this.subSystem02 = new SubSystem01(); this.subSystem03 = new SubSystem03(); } @Override public void closeMachine() { subSystem03.closeMachineInit(); //机器关闭的收尾工作:类似电脑关机时会自动保存文件等 subSystem02.closeMachine(); //机器断电 System.out.println("机器已正常关闭............."); } /** * 机器开机需要检查机器的运行状态,正常之后才可进入正常的初始化作业 */ @Override public void openMachine() { subSystem02.openMachine(); //机器通电 subSystem01.checkMachine(); //检查机器的运行状态:类似电脑的开机自检 subSystem03.openMachineInit(); //机器的初始化工作:类似电脑经过硬件自检后进入OS的初始化工作 System.out.println("机器初始化完毕........."); } }
子系统集合:
package com.zhiwei.facade; /** * 负责机器的通电和断电操作 * @author Yang ZhiWei * */ public class SubSystem01 { public void closeMachine(){ System.out.println("子系统01正在断电......"); } public void openMachine(){ System.out.println("子系统01正在通电......."); } }
package com.zhiwei.facade; /** * 子系统1:负责检查机器的运行情况 * @author Yang ZhiWei * */ public class SubSystem02 { public void checkMachine(){ System.out.println("子系统02正在检查机器运行情况......."); } }
package com.zhiwei.facade; /** * 负责系统的初始化工作 * @author Yang ZhiWei * */ public class SubSystem03 { public void openMachineInit(){ System.out.println("子系统03正在执行机器打开的初始化作业........."); } public void closeMachineInit(){ System.out.println("子系统03正在执行机器关闭的作业......."); } }
测试代码:
AbstractFacade facade = new ConcreteFacade(); facade.openMachine(); //打开机器 System.out.println("--------------------------------"); facade.closeMachine(); //关闭机器
结果:
外观模式总结:
对客户隐藏目标功能的具体实现,而是通过一个外观类提供访问目标功能的接口,内部通过组合子系统的部分功能去满足客户需求
相关文章推荐
- [导入]C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式).zip(7.52 MB)
- 设计模式中结构型模式(五)外观模式(Facade)
- 设计模式(10)-结构型-外观模式(Facade)
- 设计模式(九)外观模式Facade(结构型)
- 【设计模式基础】结构型模式 - 2 - 外观(Facade)
- “设计模式”学习之五:桥接、外观、享元与代理(结构型)
- GoF23种设计模式之结构型模式之外观模式
- GoF23种设计模式之结构型模式之外观模式
- 设计模式11——结构型模式之外观模式
- 设计模式笔记 10.Facade 外观模式(结构型模式)
- 十三.结构型设计模式——Facade Pattern(外观模式)
- 设计模式之外观(Facade)---对象结构型模式
- 设计模式笔记(11)---外观模式(结构型)
- 外观模式——结构型设计模式之五
- 设计模式-结构型模式-外观
- 设计模式十一:facade(外观)——对象结构型模式
- 设计模式笔记(11)---外观模式(结构型)
- 设计模式(九)外观模式Facade(结构型)
- 设计模式(九)外观模式Facade(结构型)
- 设计模式笔记(11)---外观模式(结构型)