外观模式

来源:互联网 发布:淘宝到货短信提醒 编辑:程序博客网 时间:2024/05/16 07:10

外观模式通过为为子系统中的一组接口提供一个统一的高层接口从而使得子系统更加容易使用。外观模式是一种使用频率非常高的模式,通过引入外观角色简化了客户端与子系统之间的交互,通过一个统一的接口来使用子系统复杂的调用,降低了子系统和客户端的耦合。

通过现实生活中的一个例子来说明这个问题,我们大学生很多人都有去电脑城装机的经历,如果我们自己去装机,需要分别购买CPU,内存,硬盘,显示器,机箱和键鼠等配件,整个过程非常麻烦,而且需要了解各种配件的细节以及组装方法。我们也可能去找电脑城专门帮别人装机的人,他们富有经验,了解各个配件的的细节和组装方法,我们只需要付给他们一些些money就可以省去很多麻烦,。在这个例子中,这个装机的人就是外观角色,提供给我们一个简洁的接口,自己去处理子配件中各种复杂的事物。

外观模式是迪米特法则的直观应用,模块相互直接应当遵循最少知道原则,低耦合的关系能够降低系统的复杂度,简化客户端和子系统之间的关系。

外观模式的UML图:


对应的C++实现:

class Package1{public:void method1(){cout << "method1" << endl;}};class Package2{public:void method2(){cout << "method2" << endl;}};class Package3{public:void method3(){cout << "method3" << endl;}};class Facade{public:void doSomething(){p1->method1();p2->method2();p3->method3();}Facade(){p1 = new Package1();p2 = new Package2();p3 = new Package3();}~Facade(){delete p1;delete p2;delete p3;}private:Package1 *p1;Package2 *p2;Package3 *p3;};void test(){Facade *facade = new Facade();facade->doSomething();delete facade;}

0 0
原创粉丝点击