中介者模式
2015-04-02 16:50
211 查看
#include<iostream> #include <string> using namespace std; class Mediator; class ConcreteColleague1; class ConcreteColleague2; class Colleague { protected: Mediator *mediator; public: Colleague(Mediator *mediator) { this->mediator=mediator; } }; class ConcreteColleague1:public Colleague { public: ConcreteColleague1(Mediator *mediator):Colleague(mediator) {} void send(string message); void notify(string message) { cout<<"同事1得到消息: "<<message<<endl; } }; class ConcreteColleague2:public Colleague { public: ConcreteColleague2(Mediator *mediator):Colleague(mediator) {} void send(string message); void notify(string message) { cout<<"同事2得到消息: "<<message<<endl; } }; class Mediator { public: virtual void send(string name,Colleague *colleague)=0; }; class ConcreteMediator:public Mediator { public: ConcreteColleague1 *colleague1; ConcreteColleague2 *colleague2; public: void send(string message,Colleague *colleague) { if(colleague==colleague1) { colleague2->notify(message); } else { colleague1->notify(message); } } }; void ConcreteColleague1::send(string message) { mediator->send(message,this); } void ConcreteColleague2::send(string message) { mediator->send(message,this); } int main() { ConcreteMediator *m=new ConcreteMediator(); ConcreteColleague1 *c1=new ConcreteColleague1(m); ConcreteColleague2 *c2=new ConcreteColleague2(m); m->colleague1=c1; m->colleague2=c2; c1->send("吃饭啦"); c2->send("去 "); return 0; }
GOOD:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示 的相互引用,从而降低耦合;而且可以独立地改变它们之间的交互。
相关文章推荐
- 深入浅出中介者模式
- 设计模式(21)-中介者模式(Mediator)
- 中介者模式(Mediator pattern)
- Mediator 中介者模式
- 行为模式 - 中介者(Mediator)
- 设计模式学习(十三)迭代器模式-中介者模式
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
- 中介者模式(Mediator)
- 中介者模式(Mediator Pattern)
- 设计模式通俗演义(一)----中介者模式
- 设计模式(19)-中介者模式(Mediator)
- 第三十一章 中介者模式(Mediator Pattern)
- 设计模式之Mediator(中介者)
- 设计模式之Mediator中介者模式
- 设计模式之Mediator(中介者)
- 中介者(Mediator)----对象行为型模式
- 中介者模式(Mediator Pattern)
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
- Mediator Pattern(中介者模式)
- java模式之中介者模式