这篇文章我们开始总结第五种结构型模式,外观模式。在日常的开发中,我们可能需要使用到多个子模块中的方法,那么统一管理使用,也就是外观模式的设计初衷,它可以给客户一个统一接口,而此接口能访问多个子系统,提高了客户使用的便利性。
定义
是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
结构
- 外观角色 : 为客户提供访问接口的角色
- 子系统 :为外观角色提供子系统的访问入口
- 客户 : 访问外观角色,来间接使用子系统。
代码示例
public class MyFacedTest {
public static void main(String args[]){
Faced faced = new Faced();
faced.read();
}
/**
* 子系统A
*/
static class SubSystemA{
public void read(){
System.out.println("访问了子系统SubSystemA的read()方法");
};
}
/**
* 子系统B
*/
static class SubSystemB{
public void read(){
System.out.println("访问了子系统SubSystemB的read()方法");
};
}
/**
* 子系统C
*/
static class SubSystemC{
public void read(){
System.out.println("访问了子系统SubSystemC的read()方法");
};
}
/**
* 外观系统
*/
static class Faced{
private SubSystemA systemA = new SubSystemA();
private SubSystemB subSystemB = new SubSystemB();
private SubSystemC subSystemC = new SubSystemC();
public void read(){
System.out.println("访问了外观系统Faced的read()方法");
systemA.read();
subSystemB.read();
subSystemC.read();
}
}
}
实现思路其实很简单,就是将各个子系统的方法调用整合到外观访问系统中,来完成从外观角色的统一调用。
优缺点分析
- 优点 降低了客户端与子系统之间的耦合度;外观系统整合多个子系统,降低了客户端控制子系统的数量和难度。
- 缺点 如果要新增一个子系统就可能要修改外观系统的代码;不能很好的控制客户端访问子系统类。
外观模式比较简单,今天就总结到这里啦,如果对您有帮助记得点个赞~