外观模式(Facade)
2016-08-30 13:40
204 查看
外观模式(Facade)
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。降低访问复杂系统的内部子系统时的复杂度。
类图:
在客户端和复杂系统之间再加一层,将调用顺序、依赖关系等处理好。举个例子:我们经常用的电脑,开机其实是个非常复杂的过程,而我们只需要按开机按钮就可以了。
例子:
模拟电脑启动,假设电脑启动顺序:启动CPU,启动内存,启动硬盘,加载数据等。
public class CPU { public void startup(){ System.out.println("启动CPU"); } }
public class Memory { public void startup(){ System.out.println("启动内存"); } }
public class Disk { public void startup(){ System.out.println("启动硬盘"); } }
//facade public class Computer { CPU cpu; Memory memory; Disk disk; public Computer(){ cpu = new CPU(); memory = new Memory(); disk = new Disk(); } public void start(){ cpu.startup(); memory.startup(); disk.startup(); } }
public static void main(String[] args) { Computer computer = new Computer(); //启动computer是个很复杂的过程,我们并不需要知道其启动各个子系统的加载过程 //只需要调用computer为各个子系统提供统一的一个接口start()就可以启动computer了 computer.start(); }
总结
外观模式优点:
1.减少系统相互依赖。2.提高灵活性。
3.提高了安全性。
适用场景:
1.为复杂的模块或子系统提供外界访问的模块。2.客户程序与抽象类的实现部分之间存在着很大的依赖性。引入facade 将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
Test
package com.qbz.test; class Frame { public void create() { System.out.println("组装骨架"); } } class Engine { public void create() { System.out.println("组装引擎"); } } class Wheel { public void create() { System.out.println("组装轮子"); } } class Controller { private Frame frame; private Engine engine; private Wheel wheel; public Controller() { frame = new Frame(); engine = new Engine(); wheel = new Wheel(); } public void build() { // 汽车组装过程 frame.create(); engine.create(); wheel.create(); System.out.println("汽车组装完成"); } } public class Main { public static void main(String[] args) { Controller controller = new Controller(); // 操作员按生产按钮开始组装汽车 controller.build(); } }
输出
组装骨架 组装引擎 组装轮子 汽车组装完成
相关文章推荐
- 设计模式学习笔记(十一)——Facade外观模式
- 包装外观(Wrapper Facade):用于在类中封装函数的结构型模式
- 《设计模式精解》学习笔记(四)——Facade(外观)模式
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
- 设计模式之Facade(外观)
- 设计模式之Facade(外观)模式
- 设计模式与泡mm的关系之Facade外观模式及外观模式的再思考
- 设计模式之Facade(外观 总管 Manager)
- Facade外观(结构型模式) --学习笔记
- 设计模式(7)-外观模式(Facade)
- [译]The Facade Pattern外观设计模式 from Chapter 6 of《Design Patterns Explained》
- 设计模式学习笔记(十一)——Facade外观模式
- 外观模式(Facade Pattern)
- 设计模式之Facade(外观 总管 Manager)
- Facade外观(结构型模式)
- 外观模式(Facade Pattern)
- 设计模式之Facade(外观 总管 Manager)
- 设计模式学习笔记(十一)——Facade外观
- 外观(Facade)模式