老接口
class IAdaptee{
public:
virtual void foo(int data)=0;
virtual int bar()=0;
};
class oldclass:public IAdaptee{
public:
virtual void foo(int data){
}
virtual int bar(){
}
};
新接口
class ITarget{
public:
virtual void process()=0;
};
class Adapter:public ITarget{
protected:
IAdaptee* pAdaptee;
public:
Adaptee(IAdaptee* pAdaptee){//定义一个构造器接收一个老的对象指针
this->pAdaptee=pAdaptee;
}
virtual void process(){
int data=pAdaptee->bar();//一般接口间转换没有那么简单
pAdaptee->foo(data);
}
};
int main() {
IAdaptee* pAdaptee=new oldclass();//通过旧接口创建对像
ITarget* pTarget=new Adapter(pAdaptee);//将旧对象指针传递给新接口
pAarget->process();// 使用新接口方法调用旧接口使用的方法
return 0;
}
模式定义:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。