您的位置:首页 > 编程语言 > C语言/C++

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

2015-06-05 15:59 344 查看
迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。

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



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



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





外观模式:

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







什么时候使用外观模式:

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





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







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





[cpp] view
plaincopy

/*

外观模式就是将复杂的子类系统抽象到同一个的接口进行管理

,外界只需要通过此接口与子类系统进行交互,而不必要直接与复杂的子类

系统进行交互

*/



#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();



}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: