软件当中,对象之间要互相发生关系,这就要求对象之间需要彼此知道其他对象,尽管将一个系统分割成许多对象通常可以增加其复用性,但是对象之间相互连接的激增又会降低其复用性。因为大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统行为进行任何较大的改动就十分困难了。
所以为了解决这样的问题,我们应用迪米特法则。如果两个类不直接通讯,这两个类不应发生直接的相互作用,如果一个类要调用另一个类得方法的话,可以通过第三者转发这个调用。将系统的网状结构转变为以中介者为中心的星形结构,每个对象不再通过直接的联系与另一个对象发生相互作用。
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。
它把多对多的交互变成了一对多的交互,从而简化的交互,理清了思路。
一个应用中介者模式的典型场合就是,form程序中,每个控件都不知道彼此的存在,不可能在点击按钮的类里面写明要改变一个文本框的内容,这样是耦合。实际情况是通过事件机制,而事件的执行是在Form窗体中的代码中完成,也就是说所有的控件的交互是通过Form窗体来作中介,操作各个对象。中介者模式一般应用于一组对象以良好但是复杂的方式进行通讯的场合,以及想定制一个分布在多个类中行为,而又不想生成太多子类的场合。
请看这个人的博客:http://www.cnblogs.com/goodcandle/archive/2005/11/21/Mediator.html