行为模式

中介者模式其实不是很常用,场景,多个继承了同一个抽象的对象要互相操作。这样,需要每个对象持有其它的对象,自己对其他对象做操作。这种方式使得对象之间耦合,对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。如果加入中介者,让对象持有中介者,中介者持有其他对象,来间接来操作其他对象,达到解耦的目的。
 
何时使用:多个类相互耦合,形成了网状结构。
如何解决:将上述网状结构分离为星型结构。
 
它的思想是把多个继承了同一个抽象的对象放在一个中介者里,组合的方式,然后把对象之间的交互交由中介者来做。最简单的一句话:把网状结构改成星型结构。
 
和桥接很像,把网状结构改成哑铃/沙漏状结构,只不过中介者连接的对象是平级的,而桥接连接的对象是有上下级别的
 
 
 

中介者模式的优缺点

优点:
  • 简化了对象之间的关系,将系统的各个对象之间的相互关系进行封装,将各个同事类解耦,使得系统变为松耦合。
  • 提供系统的灵活性,使得各个同事对象独立而易于复用。
缺点:
  • 中介者模式中,中介者角色承担了较多的责任,所以一旦这个中介者对象出现了问题,整个系统将会受到重大的影响。
  • 新增加一个同事类时,不得不去修改抽象中介者类和具体中介者类,此时可以使用观察者模式和状态模式来解决这个问题。

中介者模式的适用场景

以下情况下可以考虑使用中介者模式:
  • 一组定义良好的对象,现在要进行复杂的相互通信。
  • 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。
原文地址:https://www.cnblogs.com/43726581Gavin/p/9048493.html