中介者模式详解

概述

中介者模式(Mediator Pattern)是一种设计模式,旨在通过引入一个中介对象来封装一系列对象的交互,从而降低这些对象之间的耦合度。这种模式有助于维护和修改,因为它将复杂的网状结构关系转换为星型结构关系。

中介者模式的主要优点包括:

  • 降低类之间的耦合度,使得代码易于维护和复用。
  • 将一对多关系转变为一对一关系,提高系统的灵活性和可维护性。
  • 符合迪米特法则,即一个对象应尽可能少地了解其他对象。

常见使用场景:

  1. IM 即时通讯,用户之间的联系,都是都过服务端这个中介者,由服务端将消息推送给指定的用户。
  2. GUI 各个组件,功能单一的为基础组件,多个基础组件组合而成自定义组件。基础组件相当于 colleague,自定义组件相当于中介者,每生成一个新中介者,可以重新定义组件之间的交互行为。
  3. 房产中介,买卖双方的中介者。

类图

    
        
            classDiagram
direction LR

ConcreteMedia --|> AbstractMedia
ComponentA --|> AbstractColleague
ComponentB --|> AbstractColleague
ComponentC --|> AbstractColleague
AbstractMedia --> ComponentA
AbstractMedia --> ComponentB
AbstractMedia --> ComponentC

class AbstractMedia {
	- ComponentA a;
	- ComponentB b;
	- ComponentC c;
	+ notify(string message);
}
class ConcreteMedia {
	+ notify(string message);
}
class AbstractColleague {
	# AbstractMedia media;
}
class ComponentA {
	+ actionA();
}
class ComponentB {
	+ actionB();
}
class ComponentC {
	+ actionC();
}

        
    

注意:组件只要实现抽象同事类,包含抽象中介者就可以。各个组件不必具有同一的行为接口。每个具体的中介者实例,相当于将相关的组件之间的交互逻辑进行了封装,不同的逻辑有不同的中介者实现。