17.适配器模式(Adapter)

意图:将一个类的接口转换为Client希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类在一起工作。

UML图

17.适配器模式(Adapter)_第1张图片

Target:定义Client使用的与特定领域相关的接口。
Client:与符合Target接口的对象协同工作。
Adaptee:定义一个已经存在的接口,这个接口需要适配。
Adapter:对Adaptee的接口与Target接口进行适配。

17.适配器模式(Adapter)_第2张图片

代码:

#include 
#include 
using namespace std;
 
 
class Target{
public:
    virtual void Request(){
        cout << "Target:普通请求" << endl;
    }
};
class Adaptee{
public:
    void SpecificRequest(){
        cout << "Adaptee:特殊请求" << endl;
    }
    ~Adaptee(){
        cout << "delete Adaptee" << endl;
    }
};
 
class Adapter:public Target
{
public:
    Adaptee *adaptee;
    Adapter(){
        adaptee = new Adaptee();
    }
    void Request(){
        adaptee->SpecificRequest();
    }
    ~Adapter(){
        cout << "delete Adapter" << endl;
        delete adaptee;
    }
};
 
int main(void){
    Target *t1 = new Target();
    t1->Request();
 
    Target *t2 = new Adapter();
    t2->Request();
    return 0;
}

结果

Target:普通请求
Adaptee:特殊请求

你可能感兴趣的:(设计模式,适配器模式)