设计模式的艺术-中介者模式
行为型模式的名称、定义、学习难度和使用频率如下表所示:
1.如何理解中介者模式
-
如果在一个系统中对象之间存在多对多的相互关系,可以将对象之间的一些交互行为从各个对象中分离出来,并集中封装在一个中介者对象中,由该中介者进行统一协调,这样对象之间多对多的复杂关系就转化为相对简单的一对多关系。通过引入中介者来简化对象之间的复杂交互,中介者模式是迪米特法则的一个典型应用。
-
中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。
-
中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构。在这个星形结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。中介者模式在事件驱动类软件中应用较为广泛,特别是基于GUI的应用软件。此外,在类与类之间存在错综复杂的关联关系的系统中,中介者模式都得到了较好的应用。
-
很简单的一个案例就是QQ群的出现,第三者对象“QQ群”解决了多个用户之间沟通的成本的难题。
2.中介者模式的优缺点
-
优点
-
简化对象间的交互:降低了多个对象之间直接通信的复杂性,使对象之间的关系更清晰、简单。
-
提高松散耦合度:各个对象不再紧密依赖于彼此,增强了系统的灵活性和可维护性。
-
集中化控制:交互逻辑集中在中介者中,便于对系统的行为进行统一管理和调整。
-
减少重复代码:避免了多个对象之间重复的通信和协调逻辑。
-
-
缺点
-
如果中介者处理的逻辑过多过复杂,可能会影响系统的性能。
-
在具体中介者类中包含了大量同事之间的交互细节,可能会导致具体中介者类非常复杂,使得系统难以维护。
-
3.中介者模式的适用场景
-
多个对象之间存在复杂的交互关系:当系统中有多个对象,它们之间的交互关系错综复杂,难以理清和维护时,中介者模式可以有效地对这些交互进行管理和协调。
-
当需要改变对象之间的交互而又不想修改各个对象本身:通过修改中介者的逻辑,可以在不影响对象内部实现的情况下调整它们之间的通信方式。
-
对象之间的通信需要集中控制:例如在一个分布式系统中,为了保证消息传递的可靠性、顺序性或安全性,需要一个中央中介来处理对象之间的通信。
以上内容为根据书本内容配合搜索引擎整理得来,目的是为了学习,要是有侵权的情况发生,请联系我,我会立即予以删除,谢谢!
一起成长,人生是马拉松,可以跑得慢,但一定要在路上。