C++设计模式之适配器模式怎么实现(C++,编程语言)

时间:2024-04-27 02:29:48 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

适配器模式顾名思义在于接口的转换,最形象的例子就如两口转三口电源适配器,口子的数量可以理解为参数数量,一如我们调用三个参数的接口,而提供的接口只有两个参数,那么久需要适配器类进行接口的扩展改造,这就是适配器模式存在的最主要意义。

作用

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
想使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式。

类视图

类模式适配器

C++设计模式之适配器模式怎么实现

对象模式适配器

C++设计模式之适配器模式怎么实现

代码实现

//目标接口类,客户需要的接口classTarget{public:Target(){}virtual~Target(){}virtualvoidRequest()//定义新的标准接口{cout<<"Request"<<endl;}};//需要适配的类classObject{public:Object(){}~Object(){}voidSpecificRequest(){cout<<"SpecificRequest"<<endl;}};//类模式,适配器类,通过public继承获得接口继承的效果,通过private继承获得实现继承的效果classAdapter:publicTarget,privateObject{public:Adapter(){}~Adapter(){}virtualvoidRequest()//实现Target定义的Request接口{cout<<"AdapterRequest"<<endl;this->SpecificRequest();cout<<"----------------------------"<<endl;}};//对象模式,适配器类,继承Target类,采用组合的方式实现Object的复用classAdapter1:publicTarget{public:Adapter1(Object*adaptee):_adaptee(adaptee){}Adapter1():_adaptee(newObject){}~Adapter1(){}virtualvoidRequest()//实现Target定义的Request接口{cout<<"Adapter1Request"<<endl;_adaptee->SpecificRequest();cout<<"----------------------------"<<endl;}private:Object*_adaptee;};//client调用intmain(){//类模式AdapterTarget*pTarget=newAdapter();pTarget->Request();//对象模式Adapter1Adaptee*ade=newAdaptee();Target*pTarget1=newAdapter1(ade);pTarget1->Request();//对象模式Adapter2Target*pTarget2=newAdapter1();pTarget2->Request();return0;}

在Adapter模式的两种模式中,有一个很重要的概念就是接口继承和实现继承的区别和联系。接口继承和实现继承是面向对象领域的两个重要的概念,接口继承指的是通过继承,子类获得了父类的接口,而实现继承指的是通过继承子类获得了父类的实现(并不统共接口)。在C++中的public继承既是接口继承又是实现继承,因为子类在继承了父类后既可以对外提供父类中的接口操作,又可以获得父类的接口实现。当然我们可以通过一定的方式和技术模拟单独的接口继承和实现继承,例如我们可以通过private继承获得实现继承的效果(private继承后,父类中的接口都变为private,当然只能是实现继承了。),通过纯抽象基类模拟接口继承的效果,但是在C++中pure virtual function也可以提供默认实现,因此这是不纯正的接口继承,但是在Java中我们可以interface来获得真正的接口继承了。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:C++设计模式之适配器模式怎么实现的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C++设计模式之建造者模式怎么实现下一篇:

13 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18