适配器模式:
系统由于应用环境的变化,常常需要将一些 现存对象 放到 新的环境 中使用,但新环境的 接口 常常是现存对象 不满足的 。
将一个类的接口转换成客户希望的另一个接口,达到接口兼容。(常在一些 组件升级 中使用)
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
| class Abstract { public: virtual void DoNewSomething(); virtual ~Abstract(){} };
class OldAbstract { public: virtual void DoOldSomething(); virtual ~Abstract(){} };
class AbstractAdapter : public Abstract{ protected: OldAbstract* m_OldAbstract; public: AbstractAdapter(OldAbstract* oldAbstract) : m_OldAbstract(oldAbstract) {} virtual void DoNewSomething() override { m_OldAbstract->DoOldSomething(); } };
class User { public: void Do(){ auto oldAbstract = new OldAbstract(); auto abstractAdapter = AbstractAdapter(oldAbstract); abstractAdapter->DoNewSomething(); } };
|