适配器模式(adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。
在软件开发过程中,系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
适配器模式有两种,类适配器模式和对象适配器模式。类适配器模式要用到多继承,对象适配器模式如下图的UML类图。
当两个类所做的事情形同或相似,但是具有不同的接口时要使用适配器模式,进行接口的适配。
在双方都不太容易修改自身代码的时候再用适配器模式。
//Adaptee类 #ifndef _ADAPTEE_HPP #define _ADAPTEE_HPP #include<string> using namespace std; class Adaptee{ public: string SpecificRequest(){ return "One"; } }; #endif
//Target类 #ifndef _TARGET_HPP #define _TARGET_HPP class Target{ public: virtual int request() = 0; }; #endif
//Adapter类 #ifndef _ADAPTER_HPP #define _ADAPTER_HPP #include"target.hpp" #include"adaptee.hpp" class Adapter:public Target{ public: Adapter(Adaptee*adaptee):adaptee(adaptee){} virtual int request() override { if(adaptee->SpecificRequest() == "One"){ return 1; } } private: Adaptee* adaptee; }; #endif
//客户端代码 #include<iostream> #include"adaptee.hpp" #include"adapter.hpp" using namespace std; int main(){ Adaptee * adaptee = new Adaptee(); Adapter* adapter = new Adapter(adaptee); cout << adapter->request()<<endl; getchar(); return 0; }
原文:https://www.cnblogs.com/yb-blogs/p/12577426.html