中介模式简单实现

中介者模式中介者模式:就是对象间的访问通过中介者完成,也是加了一个中间层的模式。(与外观模式和代理模式可以对比学习,因为都是加了个中间层)
价值吗?看下面的图就明白了,把对象间的关系都转变成对象和中介者(Mediator)的关系。
先就说这些,我会再结合其他模式做一次对比分析,先抓住该模式的要点,一会在深入学习的时候就不会觉得空,任何新知识的补充都有地方可粘,要不然很容易出现学时候视乎明白了,过后又都忘记了。
中介模式代码(c++)
#include
using namespace std;
#include

// 抽象层
class Mediator{
public:
virtual void sent(string str,int to)=0;
};
class Colleague{
public:
Mediator* mediator;
virtual void sent(string str,int to)=0;
virtual void message(string str)=0;
};

// 具体层
class ConcreteColleague1:public Colleague{
public:
virtual void sent(string str,int to){
mediator->sent(str+“ofConcreteColleague1”,to);
}
virtual void message(string str){
cout<<str<<“to ConcreteColleague1”<<"\n";
}
};
class ConcreteColleague2:public Colleague{
public:
virtual void sent(string str,int to){
mediator->sent(str+“ofConcreteColleague2”,to);
}
virtual void message(string str){
cout<<str<<“to ConcreteColleague2”<<"\n";
}
};
class ConcreteMediator:public Mediator{
public:
ConcreteColleague1* c1;
ConcreteColleague2* c2;
virtual void sent(string str,int to){
if(to == 0){
c1->message(str);
}else{
c1->message(str);
}
}
};

//客户端调用
int main()
{
cout<<“代理模式演示\n”;
ConcreteMediator* cm = new ConcreteMediator();
ConcreteColleague1* c1 = new ConcreteColleague1();
ConcreteColleague2* c2 = new ConcreteColleague2();
cm->c1 = c1;
cm->c2 = c2;
c1->mediator = cm;
c2->mediator = cm;

c1->sent("ni hao",1);
c2->sent("ni hao",0);

//看代码不用考虑以下内容
int cin_a;
cin>>cin_a;
return 0;

}

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/87970560