外观模式(Facade Pattern)是一种结构设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,使得客户端只需要与外观对象交互,而不需要直接与子系统中的对象进行交互。
以下是一个简单的C++外观模式的示例:
#include <iostream>
// 子系统类A
class SubsystemA
{
public:
void operationA()
{
std::cout << "Subsystem A operation" << std::endl;
}
};
// 子系统类B
class SubsystemB
{
public:
void operationB()
{
std::cout << "Subsystem B operation" << std::endl;
}
};
// 外观类
class Facade
{
private:
SubsystemA *subsystemA;
SubsystemB *subsystemB;
public:
Facade()
{
subsystemA = new SubsystemA();
subsystemB = new SubsystemB();
}
~Facade()
{
delete subsystemA;
delete subsystemB;
subsystemA = nullptr;
subsystemB = nullptr;
}
void operation()
{
subsystemA->operationA();
subsystemB->operationB();
}
};
int main()
{
Facade facade;
facade.operation();
return 0;
}
运行结果:
Subsystem A operation
Subsystem B operation
在上述示例中,SubsystemA和SubsystemB是子系统类,分别实现了子系统的一些操作。Facade是外观类,它持有子系统类的对象,并提供了一个统一的接口operation()用于访问子系统的操作。
在main()函数中,创建了一个外观类facade对象。通过调用外观类的operation()方法,实现了访问子系统类的操作。客户端只需要与外观对象交互,而不需要直接与子系统类进行交互。
通过外观模式,可以简化客户端与子系统之间的交互,提供了一个统一的接口,隐藏了子系统的复杂性。外观模式可以提高代码的可维护性和可读性,同时也可以降低客户端与子系统之间的耦合度。