在上篇博文中,我们学习了建造者模式,这种模式的最大的特点就是:从一系列抽象化的接口中,创建出不同的对象,这些接口组成了整个构建对象的一致流程,而具体的接口实现则因物而异,建筑者模式很好地解决了接口和实现耦合关系,值得大家学习,而今天我们再来学习另外一个设计模式——外观模式,根据DP上的定义:为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。换句话来讲,就是一个一个复杂的系统将所有的复杂操作都封装起来,而对外只提供一个易于使用的接口,就拿《大话设计模式》里的例子来讲吧,例如开机操作,对于用户而言只需要按一下开机键即可,如果从系统的角度来看的话,当用户按完开机键之后,会经过很多的处理步骤,最终开机成功,用户可以正常的使用电脑,对于系统经过的流程步骤,用户完全不用理会。这个例子应该能够说明外观模式的特点了,下面,我们就从代码说起吧,代码如下:
#ifndef __FACADE__H #define __FACADE__H #include <iostream> #include <boost/smart_ptr.hpp> using namespace boost; using namespace std; class Cpu { public: void checkCpu() { cout<<"check cpu"<<endl; } }; class Memory { public: void checkMemory() { cout<<"check memory"<<endl; } }; class KeyBoard { public: void checkKeyBoard() { cout<<"check keyboard"<<endl; } }; class OnComputer { public: OnComputer() { cpu = shared_ptr<Cpu>(new Cpu); memory = shared_ptr<Memory>(new Memory); keyboard = shared_ptr<KeyBoard>(new KeyBoard); } void startComputer() { cpu->checkCpu(); memory->checkMemory(); keyboard->checkKeyBoard(); cout<<"start computer success"<<endl; } private: shared_ptr<Cpu> cpu; shared_ptr<Memory> memory; shared_ptr<KeyBoard> keyboard; }; #endif #include "Facade.h" int main() { OnComputer on; on.startComputer(); return 0; }
总结
本篇博文主要是分析设计模式里的外观模式,这个模式的特点就是外界无需要了解一个系统的底层是如何实现的,只需要简单地使用其接口即可,而在系统实现层面,需要考虑各个接口之间的调用关系,上述的代码示例虽然很简单,但是从中我们需要了解到这个模式的一些精髓的东西,比如如何定义外观接口,如何组织外观里面的一些接口实现等,,这些东西只有在实际的开发中,慢慢体会,并加以运用,才能真正明白外观模式一些实在的东西,好了,本篇博文到此结束,下篇博文我们继续学习设计模式——组合模式。
如果需要,请注明转载,多谢
原文:http://blog.csdn.net/zmyer/article/details/19923073