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()