适配器模式
简单的说就是(๑•ᴗ•๑):
电源适配器(把220V的交流电转换为电器能够使用的电压)
专业一点就是(⊙ˍ⊙):
想复用一些现成的类,但是接口又与复用环境要求不一致。那么使用适配器转换接口。
1、类适配器
适配器类继承了Target和Adaptee的方法,所以可以直接在方法中调用Adaptee的方法,实现接口的转换
2、对象适配器
适配器类继承了Target的方法,并且含有Adaptee的对象(或者指针)。可以再方法中调用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 55 56 57 58 59 60 61
| * Adapter.cpp * * Created on: 2016年3月11日 下午4:48:49 * Author: Wayne 13186259527@163.com */
#include <iostream> using namespace std;
class Target { public: virtual void Method() { cout << "我要20V的电压" << endl; } }; class Adaptee { public: void SpecialMethod() { cout << "我这里提供10V的电压" << endl; } };
class ClsAdapter: public Target, private Adaptee { public: void Method() { cout << "类适配器" << endl; cout << "你要20V,我给你20V" << endl; SpecialMethod(); cout << "我给你转换为20V" << endl; } };
class ObjAdapter: public Target { private: Adaptee ptr; public: this->ptr = ptr; }*/ void Method() { cout << "对象适配器" << endl; cout << "你要20V,我给你20V" << endl; ptr.SpecialMethod(); cout << "我给你转换为20V" << endl; } };
int main(void) { ClsAdapter cls; cls.Method(); cout << "==================" << endl; ObjAdapter obj; obj.Method(); return 0; }
|