设计模式之-外观模式
2017-07-26 11:39
134 查看
设计模式之--外观模式
1. 外观模式:
为子系统中的一组接口提供一个一致的界面,此模式定义了一个外观接口,这个接口使得这一子系统更加容易使用。
2. 何时使用外观模式:
1)当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。
这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。facade可以提供一个简单的缺省视图,
这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过facade层。
2) 客户程序与抽象类的实现部分之间存在着很大的依赖性。引入 facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
3) 当你需要构建一个层次结构的子系统时,使用 facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过facade进行通讯,从而简化了它们之间的依赖关系。
3. 四个子系统代码示例:
1. 外观模式:
为子系统中的一组接口提供一个一致的界面,此模式定义了一个外观接口,这个接口使得这一子系统更加容易使用。
2. 何时使用外观模式:
1)当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。
这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。facade可以提供一个简单的缺省视图,
这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过facade层。
2) 客户程序与抽象类的实现部分之间存在着很大的依赖性。引入 facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
3) 当你需要构建一个层次结构的子系统时,使用 facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过facade进行通讯,从而简化了它们之间的依赖关系。
3. 四个子系统代码示例:
class Sub1 { public: void f1() { cout<<"子系统的方法1"<<endl; } }; class Sub2 { public: void f2() { cout<<"子系统的方法2"<<endl; } }; class Sub3 { public: void f3() { cout<<"子系统的方法3"<<endl; } }; class Facade { private: Sub1 *s1; Sub2 *s2; Sub3 *s3; public: Facade() { s1=new Sub1(); s2=new Sub2(); s3=new Sub3(); } void method() { s1->f1(); s2->f2(); s3->f3(); } }; int main() { Facade *f=new Facade(); f->method();//s return 0; }
相关文章推荐
- 设计模式之外观模式
- 设计模式之外观模式(十一)
- 设计模式:外观模式(Facade)
- 设计模式:外观模式12.19
- 设计模式--外观模式(十二)
- Java设计模式-外观模式
- 设计模式-外观模式
- 设计模式之结构型模式(适配器、桥接、外观、代理、享元、组合、装饰)
- 设计模式(12)之外观模式
- 设计模式-外观模式
- 我所理解的设计模式(C++实现)——外观模式(Facade Pattern)
- 设计模式学习笔记--外观模式
- java设计模式之外观模式
- 设计模式-快餐简解-【外观模式】
- 设计模式 - 外观模式
- Java设计模式(五)外观模式 桥梁模式
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系(转)
- 设计模式之外观模式(Facade)
- Android设计模式应用-外观模式
- 【设计模式】—-(10)外观模式(结构型)