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

适配器模式

时间:2014-12-19 13:03:40      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:


 

---新手初学,望大神指点---

意图:将一个类的接口转换成客户希望的另一个接口。

 

适用性:1.你想使用一个已存在的类,而它的接口不符合你的需求。

    2.你想创建一个可以复用的类,该类可以与其它不相关的类或不可预见的类协同工作。

    

类适配器结构:

技术分享

 

类适配器效果:1.仅仅引入一个对象,并不需要额外的指针以间接得到adaptee。

       2.当我们想要匹配一个类以及它所有的子类时,类适配器将无法完成。

       3.使得Adapter可以重新定义Adaptee的部分行为。

 

类适配器代码:

#ifndef _ADAPTER_
#define _ADAPTER_
#include <iostream>
using namespace std;

class ChineFestival{
public:
    ChineFestival(){}
    virtual void JulySeven()
    {
        cout<<"中国人过情人节\n";
    }
};

class USAFestival{
public:
    USAFestival(){}
    virtual void March4th()
    {
        cout<<"美国人过情人节\n";
    }
};

class Festival:public ChineFestival, public USAFestival{
public:
    virtual void JulySeven()
    {
        March4th();
    }
};

#endif

中国在七月七日过情人节,美国在三月十四过情人节。

现在要实现七月七日美国人过情人节:

#include <iostream>
#include "Adapter.h"
using namespace std;

int main()
{
    ChineFestival* pFestival = new Festival;
    cout<<"7月7日";
    pFestival->JulySeven();//输出:  7月7日美国人过情人节

    return 0;
}

 

 

对象适配器结构:

技术分享

对象适配器效果:

1.允许能完成与Adaptee以及它所有子类一起工作。

2.使得重新定义Adaptee的行为比较困难。

 

用对象适配器方法就将Festival代码改成如下:

class Festival:public ChineFestival{
public:
    Festival(){pFestival = new USAFestival;}
    ~Festival(){delete pFestival;}
    virtual void JulySeven()
    {
        pFestival->March14th();
    }

private:
    USAFestival* pFestival;
};

 

适配器模式

标签:

原文地址:http://www.cnblogs.com/wrbxdj/p/4173596.html

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