适配器模式C++实现

最近自学了设计模式,发现好多书的java实现的。因为本人是从事C++开发的,因此想尝试用C++自己实现一遍,加深理解。

适配器模式

定义:

将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

适用性:

1、  你想使用一个已经存在的类,而它的接口不符合你的需求

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

3、  你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。

 

类适配器结构类图:


Target:定义了我们所需要的接口。

Adaptee:定义了已经存在的类,也就是我们想要使用的类。

Adapter:对Adaptee和Target的接口进行适配。

依赖于对象组合的对象适配器结构图:

类适配器:

优点:

1、  Adapter可以重定义Adaptee的部分行为

2、  不需要额外的指针以间接得到Adaptee

不足:

当我们想要匹配一个类以及所有它的子类时,类Adapter将无法实现

对象适配器:

优点:

一个Adapter可以与多个Adaptee以及它的所有子类同时工作

不足:

不能重定义Adaptee的行为


实现:

class Target

{

public:

       Target(){}

       virtual void Request() = 0;

};


class Adaptee

{

public:

       Adaptee(){}

       voidSpecificRequest()

       {

              cout<<"Adaptee SpecificRequest"<<endl;

       }

};

//这里需要注意,public继承Target,private继承Adaptee

class Adapter:public Target,privateAdaptee

{

public:

       Adapter(){}

       voidRequest()

       {

              cout<<"Adapter Request"<<endl;

              SpecificRequest();

       }

};

 

Target*pt = new Adapter;

pt->Request();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值