需求场景
在对象A中注册消息,指定回调函数
在对象B中解释消息,调用对应的回调函数,附上对应的参数对象
定义
public delegate void MessengerDelegate(object o); public static class Messenger { public static Dictionary<string, MessengerDelegate> MailBox = new Dictionary<string, MessengerDelegate>(); public static void Parser(string key, object o) { MessengerDelegate d; if (MailBox.TryGetValue(key, out d)) d(o); else { throw new KeyNotFoundException(); } } public static void Regist(string key, MessengerDelegate d) { MailBox.Add(key, d); } public static void Del(string key) { MailBox.Remove(key); } }
测试
public void func1(object o) { Console.WriteLine("{0}", o); } public UnitTest1() { string name="MainModel"; Messanger.Register(name, func1); Messanger.Parser(name, "hello A"); Messanger.Parser(name, "hello B"); }
好处
对于一些特殊异步场景比较有用,比如基于TCP的通信的上层应用
缺点
实时性差一点?(感觉)
等以后在评论效果,刚有的想法,欢迎讨论。