通俗易懂设计模式解析——中介者模式
前言
今天我们一起看看中介者模式,怎么去理解这个模式呢?说起来也简单、好理解。生活中我们租房经常都是通过中介来实现的。一般租房要么是房东直租要么是中介。那么今天要讲的中介者模式和租房的这个中介是否有关系呢?当然是有点关系的。中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,这个类就来处理不同类之间的通讯。租房中介也是这个道理。复制与各个房东和租户之间的通讯。将多对多简化成了一对多的关系。我们下面来具体看看到底是怎么回事吧!
四、中介者模式代码示例
看上面的案例图,我们一起看看包含的四个部分:
抽象中介者:定义了各个同事之间交互需要的方法。
具体中介者:需要了解维护各个同事对象,并且负责协调各个具体同事之间的交互。
抽象同事类:约束具体同事类的类型、并且实现一些具体同事类之间的公共方法。
具体同事类:实现自己的业务。
我们还是回到开篇讲到的那个例子。关于租房中介的例子。加入没有租房中介。这里有六个房东需要出租房屋,房屋各不相同、各有各的特点、适合不一样的人租住。这六个房东之间刚好有点联系。然后都在出租房屋。这时租客A来租房,看了一号房东的房子不满意、但是一号房东觉得可以让他去看看其他五个朋友的房间。然后开始联系他的五个朋友。这样运行下去好像有是没有什么问题的。但是其中二号房东如果房屋不出租或者出租出去了。也就是发生了变化。这是他则需要通知其他五个朋友,告诉他们不用再给他介绍租客了。这里就造成了中间一个人发生了变化,需要改动其他五个人。那么如何可以解决这种情况呢。我们回到现在。把中介加进来、那六个房东都把房屋交给中介处理。租客A看房间一不满意直接通过中介看房间二。当房间二被出租了。中介也只需要通知房东二号、然后他们签订合同。下次还有人看房间就不会再看房间二了。这里一个出现了变化也就影响改变了一个。并不会影响其他另外五个房东。这个例子可以更好的帮助我们理解中介者模式。我们下面看两幅图。
图一:不采用中介的房东租房模式,多对多的网格。一动牵全身
图二:采用中介的租房模式,一对多、一个变动不影响其他
下面我们看看代码如何实现中介者模式的吧。
namespace Mediator_Pattern { class MediatorPattern { } /// <summary> /// 抽象中介者 /// </summary> public abstract class Mediator { /// <summary> /// 定义与同事间的交互通信 /// </summary> public abstract void Common(string type); } /// <summary> /// 抽象同事类 /// </summary> public abstract class Colleague { /// <summary> /// 处理自己的事务(房东展示自己的房屋) /// </summary> public abstract