using System.Collections.Generic;
using System;
public class Mediator {
private Dictionary<string, Action<object>> dict = new Dictionary<string, Action<object>>();
//注册消息
public void RegistAction(string mes, Action<object> action)
{
if (CheckAction(mes))
{
Action<object> a = GetAction(mes);
a += action;//开辟新内存了,引用新的地址
//字典中保存的是以前的引用地址,移除,重新添加
dict.Remove(mes);
dict.Add(mes, a);
}
else {
dict.Add(mes, action);
}
}
//发送消息
public void SendMes(string mes,object par)
{
if (CheckAction(mes)) {
Action<object> action;
dict.TryGetValue(mes, out action);
action(par);
}
}
public Action<object> GetAction(string mes) {
Action<object> action;
dict.TryGetValue(mes, out action);
return action;
}
public bool CheckAction(string mes)
{
Action<object> action;
dict.TryGetValue(mes, out action);
if (action == null) {
return false;
}
return true;
}
}public abstract class SubSystem {
protected Mediator mMediator;
public SubSystem(Mediator mediator)
{
mMediator = mediator;
this.Init();
}
public abstract void Init();
}可以看出,我这里的中介者是用来做信息的沟通者的,提供给子系统添加监听和发送消息的接口。而子系统中引用这个中介者,来和其他系统沟通。(中介者模式使用示例)