栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

从零开始学习Java设计模式 | 行为型模式篇:中介者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从零开始学习Java设计模式 | 行为型模式篇:中介者模式

在本讲,我们来学习一下行为型模式里面的第七个设计模式,即中介者模式。

概述

在学习中介者模式之前,我们先来看下面这段描述。

一般来说,同事类之间的关系是比较复杂的(其实,这儿所说的同事类就是中介者模式里面的一个角色,而在这里,你可以先把它当作一个普通的类来看待),多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,既不利于类的复用,也不稳定。例如,下图中有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响,因为对象1所属类和对象2、对象4、对象5、对象6所属类之间是有关联关系的。如果对象2发生变化,那么将会有5个对象受到影响。所以,这种错综复杂的关系会让我们在后期维护起来特别特别麻烦,也就是说,同事类之间直接关联的设计是不好的。

那么我们应该如何来改进呢?这时不妨使用一下中介者模式,因为使用中介者模式的话,可以使得同事类之间的关系成为星型的结构,也就是我们下图右侧所展示出来的星型结构。

从上图右侧部分可以看到,每一个同事类,它只和中介者进行一个相互关联,而它们相互之间是不需要进行任何关联的,这样,任何一个类的变动,只会影响到类本身以及中介者,也就是说,对象1所属类里面的业务逻辑发生变化了的话,那么对象1所属类以及中介者要发生一个改变,而对于其他对象的所属类则是不需要进行改动的,这样就减小了系统的耦合。

一个好的设计,必定不会把所有的对象关系处理逻辑封装在本类中,而是使用一个专门的类来管理那些不属于自己的行为,这个专门的类就是中介者。

下面我再举一个例子让大家好好理解一下。

如果我们攒够首付了,想要去买一套属于自己的房子,那么我们应该怎么办呢?我们作为一个购房者,是不会直接去找对应的房主的,因为房主有很多,我们找起来会非常麻烦,一个一个房主去找,会累坏我们,正确的做法就是去找房屋中介。对于房主而言,他只需要把自己房子的信息交给中介进行管理即可,而对于购房者来说,他只需要去找对应的房屋中介就行,房屋中介会根据他的需求去找对应的房主协商,并给购房者一些比较不错的建议。

如果此时购房者的需求发生了变化,那么他并不需要把他的需求告知给所有的房主,而只需要告知给房屋中介即可,房屋中介会根据他的需求帮他去选择合适的房子,这就是中介者模式。

那什么是中介者模式呢?下面我们来看一下它的概念。

中介者模式又叫调停模式,它定义了一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。

上述中介者模式的概念,大家看着可能挺懵的,这没关系,下面我给大家稍微解释一下。

就拿上述购房者买房的案例来说,房屋中介就是中介者角色,它封装了房主以及购房者之间的交互关系,这样就会使得房主和购房者之间的耦合变得松散,要是没有房屋中介的话,购房者买房就只能去找房主了,一旦看的房子他不满意,他还需要再去找另外一个房主,还不满意的话,还得继续去找其他房主,那么这就非常耗时、耗资源了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号