优点:1)使用已存在的类,接口不符合要求
2)创建复用的类,该类可以与其它不相关的类协同工作
#include <iostream>
using namespace std;
class Target
{
public:
virtual void Interface() = 0;
};
class Adapter
{
public:
void SpecificInterfaceA(){ cout<<"Called SpecificInterfaceA"<<endl;}
void SpecificInterfaceB(){ cout<<"Called SpecificInterfaceB"<<endl;}
};
class AdapterClassA : public Target, public Adapter
{
public:
void Interface(){SpecificInterfaceA();}
};
class AdapterClassB : public Target
{
public:
AdapterClassB(){_adapter = new Adapter;}
void Interface(){_adapter->SpecificInterfaceB();}
private:
Adapter *_adapter;
};
int main()
{
Target *targetA = new AdapterClassA;
targetA->Interface();
Target *targetB = new AdapterClassB;
targetB->Interface();
return 0;
}
运行结果:
Called SpecificInterfaceA
Called SpecificInterfaceB