适配器模式

来源:互联网 发布:java 内存泄漏 工具 编辑:程序博客网 时间:2024/06/06 20:43

对象适配器

#include <iostream>using namespace std;class Target{public:virtual void request() = 0;};class Adaptee{public:void specificRequest(){cout << "it is my request" << endl;}};class Adapter : public Target{public:virtual void request() override{m_objAdaptee.specificRequest();}private:Adaptee m_objAdaptee;};int main(){Target* pobjTarget = new Adapter();pobjTarget->request();return 0;}
类适配器
#include <iostream>using namespace std;class Target{public:virtual void request() = 0;};class Adaptee{public:void specificRequest(){cout << "it is my request" << endl;}};class Adapter : public Target, public Adaptee{public:virtual void request() override{this->specificRequest();}};int main(){Target* pobjTarget = new Adapter();pobjTarget->request();return 0;}
缺省适配器

#include <iostream>using namespace std;class Target{public:virtual void requestOne() = 0;virtual void requestTwo() = 0;virtual void requestThree() = 0;};class DefaultAdapter : public Target{public:virtual void requestOne() override {}virtual void requestTwo() override {}virtual void requestThree() override {}};class Adapter : public DefaultAdapter{public:virtual void requestOne() override{cout << "it is my request" << endl;}};int main(){Target* pobjTarget = new Adapter();pobjTarget->requestOne();return 0;}
总结:适配器模式使用时一定要注意需要的接口和实际接口不一致,如果实际的接口可以修改的话改实际的接口会比用适配器模式更合适

0 0
原创粉丝点击