设计模式(分类) 设计模式(六大原则)
创建型(5种) 工厂方法 抽象工厂模式 单例模式 建造者模式 原型模式
结构型(7种) 适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式
行为型(11种) 策略模式 模板方法模式 观察者模式 迭代器模式 责任链模式 命令模式
备忘录模式 状态模式 访问者模式 中介者模式
外观模式(Facade Pattern)是一种结构型设计模式,其目的是为子系统提供一个统一的、更高级别的接口,使得客户端能够更容易地与子系统进行交互,而不必了解子系统的内部细节。外观模式通过创建一个外观类(Facade),封装了子系统中的复杂接口或多个子系统接口,提供一个更简洁、更易于使用的接口给客户端,从而降低了客户端与子系统之间的耦合度。
模式结构
外观模式通常包含以下角色:
工作原理
优缺点
优点
缺点
适用场景
代码示例(以Java为例)
// 子系统类
class SubsystemA {
public void operation() {
System.out.println("Subsystem A performing operation.");
}
}
class SubsystemB {
public void operation() {
System.out.println("Subsystem B performing operation.");
}
}
class SubsystemC {
public void operation() {
System.out.println("Subsystem C performing operation.");
}
}
// 外观类
class Facade {
private SubsystemA subsystemA;
private SubsystemB subsystemB;
private SubsystemC subsystemC;
public Facade() {
subsystemA = new SubsystemA();
subsystemB = new SubsystemB();
subsystemC = new SubsystemC();
}
public void performComplexOperation() {
System.out.println("Starting complex operation...");
subsystemA.operation();
subsystemB.operation();
subsystemC.operation();
System.out.println("Complex operation completed.");
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.performComplexOperation();
}
}
在这个Java示例中:
代码示例(以Python为例)
# 子系统类
class SubsystemA:
def operation(self):
print("Subsystem A performing operation.")
class SubsystemB:
def operation(self):
print("Subsystem B performing operation.")
class SubsystemC:
def operation(self):
print("Subsystem C performing operation.")
# 外观类
class Facade:
def __init__(self):
self.subsystem_a = SubsystemA()
self.subsystem_b = SubsystemB()
self.subsystem_c = SubsystemC()
def perform_complex_operation(self):
print("Starting complex operation...")
self.subsystem_a.operation()
self.subsystem_b.operation()
self.subsystem_c.operation()
print("Complex operation completed.")
# 客户端代码
def main():
facade = Facade()
facade.perform_complex_operation()
if __name__ == "__main__":
main()
在这个Python示例中: