c++设计模式之外观模式

迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。

如果其中一个类需要调用另一个类的某一个方法的话,就可以通过第三者转发

 

 

 

 

 

 

迪米特法则的首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开

 

 

 

类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及,也就是说信息的隐藏促进了软件的复用

 

 

外观模式:

外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用

 

 

什么时候使用外观模式:

首先在设计初期阶段,应该要有意识的将不同的两个层分离

 

 

将复杂的子类系统封装到一个接口,统一进行管理,使得子类系统与用户间的耦合性大大降低

 

 

 

当开发大型的系统时,你可以为系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰的接口,让系统与Facade对象交互

 

 

/*
	外观模式就是将复杂的子类系统抽象到同一个的接口进行管理
	,外界只需要通过此接口与子类系统进行交互,而不必要直接与复杂的子类
	系统进行交互
*/

#include <iostream>
using namespace std;





/*这里定义四个子类系统*/
class SubSystemOne
{
public:
	void MethorOne()
	{
		cout<<"子系统方法一"<<endl;
	}
	
};


class SubSystemTwo
{
public:
	void MethorTwo()
	{
		cout<<"子系统方法二"<<endl;
	}
	
};



class SubSystemThree
{
public:
	void MethorThree()
	{
		cout<<"子系统方法三"<<endl;
	}
	
};




class SubSystemFour
{
public:
	void MethorFour()
	{
		cout<<"子系统方法四"<<endl;
	}
	
};







/*
	外观类,接口
*/
class Facade
{
	SubSystemOne *one;
	SubSystemTwo *two;
	SubSystemThree *three;
	SubSystemFour *four;
	
	
	/*构造函数*/
public: 
	Facade()
	{
		one = new SubSystemOne();
		two = new SubSystemTwo();
		three = new SubSystemThree();
		four = new SubSystemFour();
	}
	
	
	void MethorA()
	{
		cout<<"方法组A()"<<endl;
		one->MethorOne();
		two->MethorTwo();
	}
	
	
	void MethorB()
	{
		cout<<"方法组B()"<<endl;
		three->MethorThree();
		four->MethorFour();
	}
	
	
};






/*
	客户端调用,客户端只需要与接口Facade交互就可以访问四个子类系统了
*/


void main()
{
	Facade facade;
	facade.MethorA();
	facade.MethorB();
	
}















 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值