概述
动机(Motivation)
-
客户和组件中各种复杂的子系统有过多的耦合
-
如何简化外部客户程序和系统间的交互接口?如何解耦?
模式定义
为子系统中的一组接口提供一个一致(稳定)的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。 ——《设计模式》GoF
要点总结
-
从客户程序角度来看,Façade模式简化了整个组件系统的接口,对于组件内部与外部的客户程序来说, 达到了一种”解耦“的效果——内部子系统的任何变化不会影响到Façade接口的变化。
-
Façade设计模式更注重架构的层次去看整个系统,而不是单个类的层次。Façade很多时候是一种架构设计模式。
-
Façade设计模式并非一个集装箱,可以任意地放进任何多个对象。Façade模式组件中的内部应该是”相互耦合关系比较大的一系列组件“,而不是一个简单的功能集合。
-
简单总结就是外观模式使系统将负责的功能都封装起来,只提供给客户的是一个简单的对外接口。
-
用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。
#include <iostream>
#include <string>
using namespace std;
class SubSystem1
{
public:
void DoSomething1()
{
cout << "DoSomething1" << endl;
}
};
class SubSystem2
{
public:
void DoSomething2()
{
cout << "DoSomething2" << endl;
}
};
class SubSystem3
{
public:
void DoSomething3()
{
cout << "DoSomething3" << endl;
}
};
class Facade
{
public:
void DoSomething()
{
m_a.DoSomething1();
m_b.DoSomething2();
}
private:
SubSystem1 m_a;
SubSystem2 m_b;
SubSystem3 m_c;
};
int main()
{
Facade face;
face.DoSomething();
}
最后
以上就是慈祥含羞草为你收集整理的C++设计模式(14)——外观模式的全部内容,希望文章能够帮你解决C++设计模式(14)——外观模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复