前言
不知不觉,我们学习设计模式已经很长的时间了,同学们有没有在代码设计上有一点自己的心得体会呢,上一章节我们介绍了职责链模式,职责链模式意义在于弱化发送者和接收者之间的关系,只要我们知道请求的节点,就可以将请求传下去,这一章我们将学习一章新的设计模式,中介者模式
正文
中介者模式的定义
生活中,我们的人际关系可能是错综复杂的,比如我们可能有10个朋友,这10个朋友的朋友之间可能又会互相认识,这些朋友中可能又有我们的兄弟姊妹,导致我们的人际关系网是复杂的,保持着一种紧密的耦合关系。中介者模式就是为了解决这种紧密耦合,错综复杂的场景。
增加一个中介者对象以后,所有的对象都将基于中介者进行通话,而不是互相引用,这样当业务迭代的时候,只需要修改中介者模式就可以,就不需要修改对象本身还要担心是否会牵连到别的问题。在中介者模式的帮助下,我们可以很轻松地把网状的多对多关系变成简单的一对多关系
中介者模式的实现
一如既往,在实现中介者模式之前先举一个业务场景,假设有一个发送者A,发送者B,会对消息做出不同的反馈,我们不难定义他们的方法
这时候假设有一个业务场景,需要共用这两个对象,并且两个类不确定什么情况下用,这种时候我们就可以使用中介者模式,额外再定义一个中介类,来抽象出他们两者共同的操作,进行中介处理
其实在一定意义上,这个例子中介者模式并不是最合适的,如果对象并不止a,b两种,而且其中有更加错综复杂的逻辑,中介者模式会更加适合,当需求需要迭代的时候,我们不再需要修改工具类本身,而是统一迭代中介对象即可,这里出于篇幅考虑,就不举更加复杂的例子进行说明
小结
这一章我们学习了中介者模式,中介者模式应用于对象繁杂,并且之间有着错综复杂关系的情况,额外定义一个中介者对象,来减少对象之间的耦合,用中介者来处理之间的相关交互,同时中介者也有自己的确定,面对对象复杂的系统,虽然减少了对象之间的耦合,也会定义一个庞大的中介者对象,中介者本身的逻辑复杂缠绕会比较难维护。