中介者模式(Mediator):用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.
中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,以及想定制一个分布在多个类中的行为,而又不想生成太多子类的场合
[img]http://dl2.iteye.com/upload/attachment/0100/9707/8fe2f370-99c3-3ed6-9a58-85e0693d772b.png[/img]
中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,以及想定制一个分布在多个类中的行为,而又不想生成太多子类的场合
[img]http://dl2.iteye.com/upload/attachment/0100/9707/8fe2f370-99c3-3ed6-9a58-85e0693d772b.png[/img]
#include <iostream>
using namespace std;
class Mediator
{
public:
void execute(int type)
{
if(type==1){
cout << "do thing 1" << endl;
}else if(type==2){
cout << "do thing 2" << endl;
}
}
};
class Colleague
{
public:
explicit Colleague(Mediator* mediator){
mMediator = mediator;
}
protected:
Mediator* mMediator;
};
class Colleague1:public Colleague
{
public:
Colleague1(Mediator* mediator):Colleague(mediator){
}
void operation1(){
mMediator->execute(1);
}
};
class Colleague2:public Colleague
{
public:
Colleague2(Mediator* mediator):Colleague(mediator){
}
void operation2(){
mMediator->execute(2);
}
};
int main()
{
Mediator* mediator = new Mediator;
Colleague1* colleague1 = new Colleague1(mediator);
Colleague2* colleague2 = new Colleague2(mediator);
colleague1->operation1();
colleague2->operation2();
}
do thing 1
do thing 2