c++设计模式之外观模式
来源:互联网 发布:电力系统java 编辑:程序博客网 时间:2024/06/07 03:03
迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。
如果其中一个类需要调用另一个类的某一个方法的话,就可以通过第三者转发
迪米特法则的首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的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();}
- C#--设计模式之外观模式
- 设计模式之外观
- 设计模式之外观
- 设计模式 之 外观
- 设计模式之外观
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 2012.6.18
- lr脚本调试
- 获取墙的一个侧面,并且将上的点坐标转换到XOY面在墙侧面上的坐标系
- C/C++中如何精确计时
- iOS ARC也会有内存泄露
- c++设计模式之外观模式
- 查找数组最小值,并反回最小值的在数组中的位置
- 强连通图
- 计算机组成原理调用中断服务程序和调用子程序有何区别
- 减少网站的外链但保留外链资源
- CentOS中升级Python 到 2.6.5
- 关于23种设计模式的有趣见解
- Android中startActivity中的permission检测与UID机制
- MySQL心得8-1-使用客户端程序备份和恢复