中介者模式的思想是引入一个中介者对象来封装一系列对象之间的交互。这些对象不再直接相互引用,而是通过中介者对象来通信,这样可以使各对象之间的耦合度降低,解决对象之间的依赖关系,提高系统的灵活性。举个例子,在一个聊天室中,有多个用户正在聊天。不使用中介者模式,每个用户都需要保存其他所有用户的引用,然后直接调用其他用户的方法发消息。这会造成用户对象之间高度耦合,一旦某个用户退出聊天室,其它所有用户都需要更新自己保存的用户列表,删除这个用户的引用。采用中介者模式后,我们可以引入一个中介者对象,也就是聊天室本身。每个用户只需要保存中介者对象的引用,通过它来发消息给其他用户。用户之间不再直接相互引用,降低了耦合度。当有用户加入或退出时,只需要更新中介者对象保存的用户列表,对各用户对象没有影响。中介者模式的主要优点有:1. 降低耦合度:各对象不再直接相互引用,相互依赖关系被抽象到中介者对象中。2. 可替换性:可以通过不同的中介者对象来改变系统行为,而各对象无需任何改变。3. 可扩展性:可以在不影响原有对象的情况下增加新的对象,只需要与中介者对象适当交互即可。4. 统一通信方式:通过中介者对象来统一管理不同对象之间的通信方式。中介者模式的主要缺点是:1. 中介者对象本身比较复杂,而且混杂了与各消息接收对象的交互逻辑,不易维护。2. 由于中介者对象承担了较多职责,如果其出错会导致整个系统失效,可靠性较低。3. 可能出现过多的中介者对象,增加系统的复杂性。所以,中介者模式适用于系统中对象之间存在比较复杂的交互关系,同时这些交互关系易于独立封装的情况。但不宜滥用,需要权衡系统的复杂性与中介者对象带来的影响
此文章为4月Day25学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看