中介者模式实例
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();
}


可以看出,我这里的中介者是用来做信息的沟通者的,提供给子系统添加监听和发送消息的接口。而子系统中引用这个中介者,来和其他系统沟通。(中介者模式使用示例


首页 我的博客
粤ICP备17103704号