首页 > 其他 > 详细

设计模式之外观模式

时间:2014-02-26 04:25:50      阅读:307      评论:0      收藏:0      [点我收藏+]

在上篇博文中,我们学习了建造者模式,这种模式的最大的特点就是:从一系列抽象化的接口中,创建出不同的对象,这些接口组成了整个构建对象的一致流程,而具体的接口实现则因物而异,建筑者模式很好地解决了接口和实现耦合关系,值得大家学习,而今天我们再来学习另外一个设计模式——外观模式,根据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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!