设计模式 外观模式

本文将介绍设计模式中的外观模式。

一、什么是外观模式?

外观模式通过引入一个外观角色来简化客户端和子系统之间的交互,外观角色充当 “服务员” 的角色,为复杂的子系统调用提供了一个统一的入口,降低子系统和客户端的耦合度。

二、实现

1. 结构

2. 角色

  • Facade 外观角色:
    • 将来自客户端的请求委派到对应的子系统
  • SubSystem 子系统角色
    • 子系统角色由一个或多个类组成
    • 子系统角色并不知道外观角色的存在,对于它而言,外观角色只是某一个客户端

3. 简单示例

Facade:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Facade {
private SubSystemA subSystemA = new SubSystemA();

private SubSystemB subSystemB = new SubSystemB();

private SubSystemC subSystemC = new SubSystemC();

public void method {
// 调用subSystemA

// 调用subSystemB

// 调用subSystemC
}
}

SubSystem:

1
2
3
4
5
6
7
8
9
10
11
public class subSystemA {
···
}

public class subSystemB {
···
}

public class subSystemC {
···
}

三、优缺点

1. 优点

  • 通过引入外观模式,可以较少客户端的代码逻辑
  • 实现了子系统与客户端之间的松耦合关系

2. 缺点

  • 增加新的子系统时,需要修改外观角色的代码

参考

  • 《Java 设计模式》