设计模式学习-----中介者模式
2012-12-13 14:39
134 查看
中介者模式
GOOD:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合;而且可以独立地改变它们之间的交互。
GOOD:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合;而且可以独立地改变它们之间的交互。
#include <iostream> #include <string> #include <vector> using namespace std; class Colleague; //中介者类 class Mediator { public: virtual void Send(string message,Colleague* col) = 0; }; //抽象同事类 class Colleague { protected: Mediator* mediator; public: Colleague(Mediator* temp) { mediator = temp; } }; //同事一 class Colleague1 : public Colleague { public: Colleague1(Mediator* media) : Colleague(media){} void Send(string strMessage) { mediator->Send(strMessage,this); } void Notify(string strMessage) { cout<<"同事一获得了消息"<<strMessage<<endl; } }; //同事二 class Colleague2 : public Colleague { public: Colleague2(Mediator* media) : Colleague(media){} void Send(string strMessage) { mediator->Send(strMessage,this); } void Notify(string strMessage) { cout<<"同事二获得了消息"<<strMessage<<endl; } }; //具体中介者类 class ConcreteMediator : public Mediator { public: Colleague1 * col1; Colleague2 * col2; virtual void Send(string message,Colleague* col) { if(col == col1) col2->Notify(message); else col1->Notify(message); } }; //客户端: int main() { ConcreteMediator * m = new ConcreteMediator(); //让同事认识中介 Colleague1* col1 = new Colleague1(m); Colleague2* col2 = new Colleague2(m); //让中介认识具体的同事类 m->col1 = col1; m->col2 = col2; col1->Send("吃饭了吗?"); col2->Send("还没吃,你请吗?"); return 0; } //转载请注明,文章来自:http://blog.csdn.net/windows_nt
相关文章推荐
- 步步为营 .NET 设计模式学习笔记 二十、Mediator(中介者模式)
- “设计模式”学习之七:解释器与中介者(行为型)
- 设计模式学习—中介者模式(Mediator Design Pattern)
- 中介者模式 - 设计模式学习
- 设计模式之中介者模式的学习思考
- 【软考学习】设计模式——中介者模式
- java学习笔记-设计模式23(中介者模式)
- 设计模式学习笔记(23)——中介者模式
- 设计模式学习--------11.中介者模式学习
- 设计模式深入学习--Mediator 中介者模式(行为型模式)
- 设计模式学习笔记--中介者模式Mediator pattern(Java版)
- 设计模式学习笔记——中介者模式
- Java设计模式学习记录-中介者模式
- 中介者模式 - 设计模式学习
- 设计模式学习(十三)迭代器模式-中介者模式
- Java设计模式学习记录-中介者模式
- 设计模式学习总结(23) 中介者模式
- 设计模式学习-每日一记(20.中介者模式)
- 设计模式学习--------11.中介者模式学习
- 步步为营 .NET 设计模式学习笔记 二十、Mediator(中介者模式)