结构型: 外观模式

外观模式(Facade Pattern):是迪米特原则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类和子系统的耦合度。

  1. 优点
    • 对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目。
    • 实现了客户端与子系统之间的松耦合关系。
  2. 缺点
    • 如果对客户端访问子系统做太多限制,会减少灵活性。
    • 如果有增加新的子系统可能需要修改外观类的源码,违背了开闭原则。
  3. 适用场景
    • 为一系列复杂的子系统提供一个简单入口。
    • 引入外观类进行解耦。
    • 在层次化结构中,使用外观模式定义每层的入口,降低层之间的耦合度。

1
2
3
4
5
6
7
8
9
10
11
public class Facade {
private SubSystemA subSystemA = new SubSystemA();
private SubSystemB subSystemB = new SubSystemB();
private SubSystemC subSystemC = new SubSystemC();
public void method(){
subSystemA.methodA();
subSystemB.methodB();
subSystemC.methodC();
}
}
1
2
3
4
5
public class SubSystemA {
public void methodA(){
}
}
1
2
3
4
5
public class SubSystemB {
public void methodB(){
}
}
1
2
3
4
5
public class SubSystemC {
public void methodC(){
}
}