设计模式基础(10):适配器模式&中介者模式
包含适配器模式&中介者模式两种模式中的C++示例代码、面向的问题、图解两种模式核心思想
适配器模式
面向的需求
示例代码
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
| class ITarget{ public: virtual void process()=0; };
class IAdaptee{ public: virtual void foo(int data)=0; virtual int bar()=0; };
class OldClass: public IAdaptee{ };
class Adapter: public ITarget{ protected: IAdaptee* pAdaptee; public: Adapter(IAdaptee* pAdaptee){ this->pAdaptee=pAdaptee; } virtual void process(){ int data=pAdaptee->bar(); pAdaptee->foo(data); } };
class Adapter: public ITarget, protected OldClass{ }
int main(){ IAdaptee* pAdaptee=new OldClass(); ITarget* pTarget=new Adapter(pAdaptee); pTarget->process(); } };
|
1 2 3 4 5 6 7 8
| class stack{ deqeue container; };
class queue{ deqeue container; };
|
代码思想分析
关键点
- 核心思想:复用现存的类到新的应用环境。
- 优先采用对象适配器
中介者模式
面向的需求
- 当多个类之间产生大量复杂的互相引用时,可以考虑引入中介者来减少系统之间的耦合关系。
类图分析
关键点
- 中介者模式将多个对象间的控制逻辑进行集中的管理,简化系统的维护。
- 作为对比可以想到门面模式是解耦子系统和外部系统的关系。中介者模式是解耦系统内部各个对象之间的关系。