在软件系统中,由于应用环境的变化,常常需要将”一些现存的对象”放在新的环境中应用.但是新的环境要求的接口是这些现存对象所不满足的.
如何应对这种”迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?
将一个类的接口转换为客户希望的另一个接口.Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作
//目标接口(新接口)
class ITarget{
public:
virtual void process() = 0;
}
//遗留接口
class IAdaptee{
public:
virtual void foo(int data) = 0;
virtual int bar() = 0;
}
//遗留类
class OldClass : IAdaptee{
public:
public:
void foo(int data){
//..
};
int bar(){
//..
};
}
//对象适配器
class Adapter : public ITarget{
//对象
protected:
IAdaptee* pAdaptee; //组合
public:
Adapter(IAdaptee *PAdaptee){
this->pAdaptee = pAdaptee;
}
virtual void process(){
int data = pAdaptee->bar();
pAdatee->foo(data);
}
}
//类适配器
class Adapter : public ITarget,protected OldClass//多继承,这样不好 因为类被写死了
{
}
int main(){
IAdaptee* pAdaptee = new OldClass();
ITarget *pTarget = new Adapter(pAdaptee);
pTarget->process();
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168503.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有