适配器模式(adapter)C++实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

适配器模式(adapter)

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

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

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

类适配器结构:

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

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

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

类适配器代码:

#ifndef _ADAPTER_

#define _ADAPTER_

#include

using namespace std;

class Target{

public:

Target(){}

virtual void JulySeven()

{

cout<<"中国人过情人节\n";

}

};

class Adaptee{

public:

Adaptee(){}

virtual void March14th()

{

cout<<"美国人过情人节\n";

}

};

class AdapterClass: public Target, public Adaptee{ public:

AdapterClass(){}

public:

virtual void JulySeven()

{

March14th();

}

};

#endif

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

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

#include

#include "Adapter.h"

using namespace std;

int main()

{

Target* target = new Target;

cout<<"7月7日";

target->JulySeven();

//类适配器

target = new AdapterClass;

cout<<"7月7日";

target->JulySeven();

//对象适配器

target = new AdapterObject;

cout<<"7月7日";

target->JulySeven();

return 0;

}

对象适配器结构:

对象适配器效果:

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

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

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

class AdapterObject: public Target{

public:

AdapterObject()

{

pFestival = Adaptee();

}

virtual void JulySeven()

{

pFestival.March14th();

}

private:

Adaptee pFestival; };

相关文档
最新文档