外观模式(Facade Pattern)是一种
结构型设计模式,它提供了一个统一的接口,用于访问一组接口的功能。通过外观模式,客户端可以简化与复杂子系统的交互,只需要与外观对象进行交互。
1 结构图

2 代码展示
首先,我们有一个复杂的子系统,它包含多个类和接口:
// 子系统中的类
class SystemA {
public void operationA() {
System.out.println("SystemA methodA");
}
}
class SystemB {
public void operationB() {
System.out.println("SystemB methodB");
}
}
class SystemC {
public void operationC() {
System.out.println("SystemC methodC");
}
}
然后,我们创建一个外观类,它将子系统的功能进行封装:
// 外观类
class Facade {
private SystemA subSystemA;
private SystemB subSystemB;
private SystemC subSystemC;
public Facade() {
subSystemA = new SystemA();
subSystemB = new SystemB();
subSystemC = new SystemC();
}
public void wrapOperation() {
subSystemA.operationA();
subSystemB.operationB();
subSystemC.operationC();
}
}
最后,我们可以在客户端代码中使用外观类:
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.wrapOperation();
}
}
输出结果将是:

3 总结
在以下情况下可以使用外观模式:
- 当要为一个复杂子系统提供一个简单接口时可以使用外观模式。该接口可以满足大多数用户的需求,而且用户也可以越过外观类直接访问子系统。
- 客户程序与多个子系统之间存在很大的依赖性。引入外观类将子系统与客户以及其他子系统解耦,可以
提高子系统的独立性和可移植性。 - 在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而
通过外观类建立联系,降低层之间的耦合度。
本文介绍了外观模式(FacadePattern),如何通过提供统一接口隐藏子系统的复杂性,简化客户端与子系统的交互。它有助于解耦、提高独立性和层次结构的组织。
222

被折叠的 条评论
为什么被折叠?



