首页 > 代码库 > 适配器模式

适配器模式


 

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

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

 

适用性: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;};

 

适配器模式