我是靠谱客的博主 慈祥含羞草,最近开发中收集的这篇文章主要介绍C++设计模式(14)——外观模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

动机(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)——外观模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部