适配器模式
设计模式
Adapter模式也叫适配器模式,是构造型模式之一,通过 Adapter模式可以改变已有类(或外部类)的接口形式。
角色:
- Client:用户类,使用新接口Target来完成某些特定的需求。
- Target:新的接口类,开放特定接口request来完成某些特定操作,与Client协作。
- Adaptee:原有的类。
- Adapter:适配器类,将Adaptee中的接口封装成Target中的新接口,来满足新的需求。
协作:
- Client调用Adapter实例的操作,Adapter使用Adaptee来完成这些被调用的操作。
注:
- 类图中表示的是适配器模式两种类图中的对象适配器类图,另外一种类适配器通过多重继承两个类或实现两个接口来实现。
适用于:
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include <iostream>
using namespace std;
class Current18V { public: virtual void useCurrent18V() = 0; protected: private: };
class Current220V { public: void useCurrent220V() { cout << "use220V" << endl; } protected: private: };
class Adapter : public Current18V { public: Adapter(Current220V* current) { m_current = current; } virtual void useCurrent18V() { m_current->useCurrent220V(); } protected: private: Current220V* m_current; };
int main() { Current220V* current220V = new Current220V;
Adapter* adapter = new Adapter(current220V); adapter->useCurrent18V();
delete current220V; delete adapter; cout << "Hello world!" << endl; return 0; }
|
输出: