码迷,mamicode.com
首页 > 其他好文 > 详细

外观模式

时间:2014-09-02 19:44:25      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   使用   strong   ar   div   

模式定义: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高级接口,该接口使得这一子系统更加容易使用。


说白了,就是把不同类中的功能封装到一个类里,由客户端调用,客户端只需关心这一个封装类即可。该模式的本意,是既可以使用封装类调用默认组装规则,也可以使用具体类去自由组装。但这样其实并不符合迪米特法则,所以我改成了下面这样,只允许调用封装类,不过下面只适用于所有客户端都只使用同一种组装规则的情形。


优点:符合迪米特法则,另外如果需要修改组装顺序或增减组装元素,也不需要修改客户端代码。

#include <iostream>
 
class WearClothes
{
    void wear() { std::cout<<"穿戴衣帽"<<std::endl; }
    friend class Facade;
};
 
class WearSocks
{
    void wear() { std::cout<<"穿袜子"<<std::endl; }
    friend class Facade;
};
 
class WearShoes
{
    void wear() { std::cout<<"穿鞋子"<<std::endl; }
    friend class Facade;
};
 
struct Facade
{
    void facade()
    {
        WearClothes *p1 = new WearClothes();
        WearSocks *p2 = new WearSocks();
        WearShoes *p3 = new WearShoes();
        p1->wear();                                                 
        p2->wear();
        p3->wear();
        delete p1,p2,p3;
    }                                                       };
}
 
int main()
{
    Facade p;
    p.facade();
}

 

外观模式

标签:style   blog   color   os   io   使用   strong   ar   div   

原文地址:http://www.cnblogs.com/tianyajuanke/p/3952047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!