详解设计模式——外观模式

来源:互联网 发布:贪心算法实例 编辑:程序博客网 时间:2024/05/19 00:49

外观模式(Facade)

为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。降低访问复杂系统的内部子系统时的复杂度。

类图:

在客户端和复杂系统之间再加一层,将调用顺序、依赖关系等处理好。举个例子:我们经常用的电脑,开机其实是个非常复杂的过程,而我们只需要按开机按钮就可以了。

模拟电脑启动,假设电脑启动顺序:启动CPU,启动内存,启动硬盘,加载数据等。

1.  publicclass CPU{

2.   

3.      publicvoid startup(){

4.          System.out.println("启动CPU");

5.      }

6.  }

1.  publicclassMemory{

2.   

3.      publicvoid startup(){

4.          System.out.println("启动内存");

5.      }

6.  }

1.  publicclassDisk{

2.   

3.      publicvoid startup(){

4.          System.out.println("启动硬盘");

5.      }

6.  }

1.  //facade

2.  publicclassComputer{

3.   

4.      CPU cpu;

5.      Memory memory;

6.      Disk disk;

7.   

8.      publicComputer(){

9.          cpu =new CPU();

10.         memory =newMemory();

11.         disk =newDisk();

12.     }

13.  

14.     publicvoid start(){

15.         cpu.startup();

16.         memory.startup();

17.         disk.startup();

18.     }

19. }

1.  publicstaticvoid main(String[] args){

2.          Computer computer=newComputer();

3.          //启动computer是个很复杂的过程,我们并不需要知道其启动各个子系统的加载过程

4.          //只需要调用computer为各个子系统提供统一的一个接口start()就可以启动computer

5.          computer.start();

6.           }

外观模式优点:

  • 1.减系统相互依赖
  • 2.提高灵活性。
  • 2.提高了安全性。

适用场景:

  • 1.为复杂的模块或子系统提供外界访问的模块。
  • 2.客户程序与抽象类的实现部分之间存在着很大的依赖性。引入facade 将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
原创粉丝点击