真实生活举例
适配器分类
对象适配器(非继承)
适配器实现了其中一个对象的接口,并对另一个对象进行封装。所有流行的编程语言都可以实现适配器。
#include <iostream> // Target 客户期待的接口,可以是具体类,抽象类,接口类 class Target { public: virtual void request() { std::cout << "普通请求" << std::endl; } }; // 需要适配的类 class Adaptee { public: void specialRequest() { std::cout << "特殊请求" << std::endl; } }; class Adapter:public Target { public: void request() { adaptee->specialRequest(); } private: Adaptee* adaptee = new Adaptee; }; int main() { Target * target = new Adapter(); target->request(); }
类适配器(继承)
适配器同时继承两个对象的接口。请注意, 这种方式仅能在支持多重继承的编程语言中实现,例如 C++
#include <iostream> // Target 客户期待的接口,可以是具体类,抽象类,接口类 class Target { public: virtual void request() { std::cout << "普通请求" << std::endl; } }; // 需要适配的类 class Adaptee { public: void specialRequest() { std::cout << "特殊请求" << std::endl; } }; class Adapter :public Target,private Adaptee { public: void request() { specialRequest(); } }; int main() { Target * target = new Adapter(); target->request(); }