外观模式属于接口隔离模式。
Facade模式作用和目的:
为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个外观(Facade)对象,它为子系统中较一般的设施提供了一个单一而简单的界面。将各个子系统整合起来作为Facade,提供给客户端使用。
Facade模式使用场景:
1、当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。
2、客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
3、当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点,如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。
#include <iostream>
using namespace std;
class Subsystem1
{
public:
Subsystem1() {};
~Subsystem1() {};
void Operation() { cout << "Subsystem1::Operation" << endl; };
};
class Subsystem2
{
public:
Subsystem2() {};
~Subsystem2() {};
void Operation() { cout << "Subsystem2::Operation" << endl; };
};
class Facade
{
public:
Facade() {};
~Facade() {};
void OperationWrapper() { _subsys1.Operation(); _subsys2.Operation(); };
private:
Subsystem1 _subsys1;
Subsystem2 _subsys2;
};
int main()
{
Facade pFacade;
pFacade.OperationWrapper();
return 0;
}
转载文章
C++外观模式详解--设计模式(11)
网友评论