原文:乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
[索引页][源码下载]
乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
作者:webabcd
介绍
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
示例
有一个Message实体类,某个对象对它的操作有Send()和Insert()方法,现在用一个中介对象来封装这一系列的对象交互。

MessageModel
AbstractMessageMediator
MessageMediator
AbstractMessage
SqlMessage
XmlMessage
Test

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;


using Pattern.Mediator;


public partial class Mediator : System.Web.UI.Page



{

protected void Page_Load(object sender, EventArgs e)


{

AbstractMessageMediator messageMediator = new MessageMediator();


AbstractMessage user1 = new SqlMessage("user1");

AbstractMessage user2 = new SqlMessage("user2");

AbstractMessage user3 = new XmlMessage("user3");

AbstractMessage user4 = new XmlMessage("user4");


messageMediator.Register(user1);

messageMediator.Register(user2);

messageMediator.Register(user3);

messageMediator.Register(user4);


Response.Write(user1.Send("user2", new MessageModel("你好!", DateTime.Now)));

Response.Write("<br />");

Response.Write(user2.Send("user1", new MessageModel("我不好!", DateTime.Now)));

Response.Write("<br />");

Response.Write(user1.Send("user2", new MessageModel("不好就不好吧。", DateTime.Now)));

Response.Write("<br />");

Response.Write(user3.Send("user4", new MessageModel("吃了吗?", DateTime.Now)));

Response.Write("<br />");

Response.Write(user4.Send("user3", new MessageModel("没吃,你请我?", DateTime.Now)));

Response.Write("<br />");

Response.Write(user3.Send("user4", new MessageModel("不请。", DateTime.Now)));

Response.Write("<br />");

}

}
运行结果
Sql方式插入Message(user1发送给user2) - 内容:你好! - 时间:2007-5-19 23:43:19
Sql方式插入Message(user2发送给user1) - 内容:我不好! - 时间:2007-5-19 23:43:19
Sql方式插入Message(user1发送给user2) - 内容:不好就不好吧。 - 时间:2007-5-19 23:43:19
Xml方式插入Message(user3发送给user4) - 内容:吃了吗? - 时间:2007-5-19 23:43:19
Xml方式插入Message(user4发送给user3) - 内容:没吃,你请我? - 时间:2007-5-19 23:43:19
Xml方式插入Message(user3发送给user4) - 内容:不请。 - 时间:2007-5-19 23:43:19
参考
http://www.dofactory.com/Patterns/PatternMediator.aspx
OK
[源码下载]