中介者模式
用一个 中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,可以独立地改变它们之间的交互。
适用场景
1、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
2、 一个对象引用其他很多对象并且直接与这些对象通信 ,导致难以复用该对象。
3、想定制一个分布在多个类中的行为,而又不想生成太多的子类。
采用菜鸟教程的例子,这里用C++实现
#include<iostream>
#include<string>
using namespace std;
class User
{
public:
User(string tname) { name = tname; };
~User() {};
string getName() { return name; };
void setName(string tname) { name = tname; };
void sendMessage(string message);
private:
string name;
};
class ChatRoom
{
public:
ChatRoom() {};
~ChatRoom() {};
static void showMessage(User *user, string message) {cout << " [" << user->getName() << "] : " << message << endl;};
};
void User::sendMessage(string message)
{
ChatRoom::showMessage(this, message);
}
int main()
{
User robert("Robert");
User john("John");
robert.sendMessage("Hi! John!");
john.sendMessage("Hello! Robert!");
}
在visual studio 2015上运行结果: