开头
今天我们学习一下中介者模式,中介,什么是中介呢?中介指在不同事物或同一事物内部对立两极之间起居间联系作用的环节。对立的两极通过中介联成一体。中介因对立面的斗争向两极分化,导致统一体的破裂。可能大家一看就懵逼,说白了就是两个人之间联系,中间多了一个第三者,好比我们租房子的中介,好比我们平时通过第三方和自己亲人朋友聊天,例如QQ,微信等都是中介者。
内容
关于中介者模式我们日常可能都有所了解,他给我们最大的帮助就是可能找房子,我将自己的住房信息告诉中介,中介代替我去找合适的房源,然后与房主进行沟通。
场景一:没有中介,我自己找到了房主,然后和房主商量好,自己要住房,所有的手续都办完了,商量住房价钱的时候,发现自己资金不足,不得不取消住房。这就好比代码都写好了,忽然某一个对象的参数状态发生改变,所有其他的对象信息都要发生改变。
场景二:有中介:我自己找到了中介这个平台,只需要将自己的信息告诉中介,中介根据我的情况,算好,这次租房要花费多少钱,就不用人工去计算了,中介者最主要的作用就是起了协调作用。他们将一个对象的实际情况交给程序去做,确保信息无误。
中介者模式大致分为四类,分别为抽象同事类(Colleague)、具体同事类(ConcreteColleague)抽象中介者(Mediator)、具体中介者(ConcreteMediator)
抽象同事类(Colleague):定义具体同事类的公有方法
抽象中介者(Mediator):声明一个接口,用于具体同事之间的通信
具体同事类(ConcreteColleague):1.先和通信者之间进行通信,2.通过中介者与其他具体同事类实现通信。
具体中介者(ConcreteMediator):协调各个具体同事者之间的通信。
客户端:
显示结果:
总结
中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。 |
优点:(1)减少对象之间直接交互产生的错误,多个对象之间的交互(多对多),变成了通过中介者,形成了一对错的模式。
(2)将各个同事时间接解耦,形成独立的类,使系统变得松耦合,可灵活的增加新的中介者以及具体同事类。
缺点:(1)中介者承担角色任务重,中介者出现问题,导致系统崩溃。
(2)增加新的具体同事类,需更改具体中介者类,违背了开闭原则,但是可以观察者和状态者模式可以更改该问题。
适用环境:(1)多个对象之间进行复杂的相互通信。
(2)一个对象和多个对象直接通信,那一复用该对象(给大家发相同消息,确不得不一个个的发送的时候)。
(3)想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。
关于中介者模式的学习就先到这里,如果本篇博客对于初学者的您有一定的帮助,记得给博主点赞哦。