一.简介
外观(Facade)模式:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问。
外观(Facade)模式主要定义了一个高层接口,包含了对各个子系统的引用,通过它访问各个子系统的功能。与计算机领域一位大神说的:“Any problem in computer science can be solved by another layer of indirection”(计算机科学领域的任何问题都可以通过增加一个中间层来解决”) 如出一辙。
模式结构:
1.外观(Facade)角色:为多个子系统对外提供一个共同的接口。
2.子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。
3.客户(Client)角色:通过一个外观角色访问各个子系统的功能。
二.实现
package com.vincent;
import java.util.ArrayList;
import java.util.List;
/**
* 子系统类
*/
class SubSystem1{
void method1(){
}
}
class SubSystem2{
void method2(){
}
}
/**
* 外观类
*/
class Facade{
private SubSystem1 subSystem1 = new SubSystem1();
private SubSystem2 subSystem2 = new SubSystem2();
public void method(){
subSystem1.method1();
subSystem2.method2();
}
}
三.总结
1.当一个复杂系统的子系统很多时,外观模式可以为系统设计一个简单的接口供外界访问