1、介绍
外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的、高层次的接口,使得子系统更容易使用。这种模式隐藏了子系统的复杂性,并为客户端提供了一个简单的接口。
外观模式的结构:
(1)Facade(外观):这是客户端调用的接口,它知道哪些子系统类负责处理请求,并将客户端的请求代理给适当的子系统对象。
(2)Subsystems(子系统):这些是实现系统功能的类,但客户端通常不直接与之交互。
应用场景:
(1)简化接口。
(2)解耦客户端和子系统。
(3)隐藏子系统复杂性。
(4)游戏配置设置。
(5)多个复杂类交互简化。
2、示例
#include <iostream>// 子系统A
class SubsystemA {
public: void operationA() { // 子系统A的实现细节 std::cout << "SubsystemA operationA()" << std::endl; }
}; // 子系统B
class SubsystemB {
public: void operationB() { // 子系统B的实现细节 std::cout << "SubsystemB operationB()" << std::endl; }
}; // 外观类
class Facade {
private: SubsystemA subsystemA; SubsystemB subsystemB; public: // 提供给客户端的简单接口 void operation() { subsystemA.operationA(); subsystemB.operationB(); }
}; // 客户端代码
int main() { Facade facade; facade.operation(); // 客户端只与外观类交互 return 0;
}
结果:
SubsystemA operationA()
SubsystemB operationB()