适配器模式

一,概述

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


二,解决的问题

即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。


三,模式中的角色

1,目标接口(Target):用户所期待的接口,目标可以是具体的类或抽象类。

2,需要适配的类(Original):需要适配的类。

3,适配器(Adapter):通过包装一个需要适配的对象,把原接口转成目标接口。


四,应用举例

常用的适配器模有两种类型,分别是类适配器模式和对象适配器模式。由于类适配器模式通过多重继承来实现,而C#、java等语言都不支持多重继承,因而这里只是介绍对象适配器。原来的Original类提供的接口是specialRequest,而现在用户想使用request接口我们首先定义一个类Target,在这个类中声明一个虚函数request,这就是用户想要的接口。然后再定义一个Adapter类,这个类继承于Target类,Adapter类有一个数据成员Original *p = new Original,在Adapter类中重写Target类的request方法。最后在Adapter类的request方法中调用p->specialRequest,这样就完成了从Original::specialRequestt接口到Target::request接口的转换。

image

下面是具体的代码:

#include <iostream>
using namespace std;

class Original{
public:
    void specialRequest(){
        cout<<"specialRequest"<<endl;
    }
};

class Target{
public:
    virtual void request(){}
};

class Adapter : public Target{
private:
    Original *p;
public:
    Adapter(){
        p = new Original;
    }
    void request(){
        p->specialRequest();
    }
};

int main() {
    Target *p = new Adapter;
    p->request();
    return 0;
}

输出结果

specialRequest

Process returned 0 (0x0)   execution time : 0.046 s
Press any key to continue.

程序分析

从输出结果可以看出,使用Adapter类完成从Original::specialRequestt接口到Target::request接口的转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值