意图:将一个类的接口转换为Client希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类在一起工作。
UML图
Target:定义Client使用的与特定领域相关的接口。
Client:与符合Target接口的对象协同工作。
Adaptee:定义一个已经存在的接口,这个接口需要适配。
Adapter:对Adaptee的接口与Target接口进行适配。
代码:
#include <iostream>
#include <list>
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:特殊请求