设计模式-中介者模式

先来讲个故事吧。现在买房子,很少能够直接和卖家接触,都是跟中介打交道,中介负责传话。那么放入计算机里面,卖家,买家都是人嘛,那就是有共同的父类的一些对象,打交道就是说话嘛,那就是面对面说话,这样就会有较强的耦合性,假设卖家今天没来,那你岂不是无话可说?这就是耦合性!!!为了解耦,那么就采用中介这样的形式,买家只用告诉中介,买家知道中介一定会告诉卖家,就行了。这样买家,卖家就解耦了。直接贴出代码。

(1)首先解耦的关键点在于中介,要是没有中介,什么都没法说。下面就是中介的超类。

设计模式-中介者模式

(2)卖家和买家都是人嘛,那么他们就属于同一级别,都会说话、听话。那么定义一个超类。

设计模式-中介者模式

这个中介呢,肯定是卖家和买家都要和同一个中介保持联系吧,要是不联系或者不同中介,那还说个铲铲哦。那么接下来中介也肯定要有双方的联系方式。

(3)具体的房屋中介了。

设计模式-中介者模式

这样中介也有了双方的联系方式。最后就是贴出实验了。

设计模式-中介者模式

可以看到,买家给中介说:我想要买房子了。卖家就能收到中介告诉的消息,那么就可以回复买家了,我有房子在卖呀。

这样就是实现了买卖双方的解耦。总结一下优缺点吧。

优点:

(1)同一层级的对象,需要调用其他对象的一些逻辑,那么这个时候为了解耦,选择了中介的形式。

(2)还有一个好处,文章中没有体现出来,有点像hibernate的多对多关系,可以将单纯的多对多关系转换成两个一对多关系。

缺点:

(1)如果滥用的话,可能会导致中介类的逻辑过于复杂。