基本介绍
1) 中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显
式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互
2) 中介者模式属于行为型模式,使代码易于维护
3) 比如 MVC 模式,C(Controller 控制器)是 M(Model 模型)和 V(View 视图)的中介者,在前后端交互时起到了中间人的作用
原理类图
Mediator(抽象中介者):中介者接口,该接口用于与各同事对象之间进行通信。
ConcreteMediator(具体中介者):具体中介者实现对象,它维持对各个同事对象的引用,协调各个同事对象来
实现协作行为。
Colleague(抽象同事类):主要负责约束同事对象的类型,它定义各个同事类公有的方法,并声明了一些抽象方
法来供子类实现,同时它维持了一个对抽象中介者类的引用,其子类可以通过该引用来与中介者通信。
ConcreteColleague(具体同事类):在需要与其他同事通信的时候,就与持有的中介者通信,中介者负责与其
他的同事进行交互;在具体同事类中实现了在抽象同事类中声明的抽象方法。
中介者模式的注意事项和细节
1) 多个类相互耦合,会形成网状结构, 使用中介者模式将网状结构分离为星型结构,进行解耦
2) 减少类间依赖,降低了耦合,符合迪米特原则
3) 中介者承担了较多的责任,一旦中介者出现了问题,整个系统就会受到影响
4) 如果设计不当,中介者对象本身变得过于复杂,这点在实际使用时,要特别注意
demo:
public abstract class Mediator {
//将给中介者对象,加入到集合中
public abstract void Register(String colleagueName, Colleague colleague);
//接收消息, 具体的同事对象发出
public abstract void GetMessage(int stateChange, String colleagueName);
public abstract void SendMessage();
}
public abstract class Colleague {
private Mediator mediator;
public String name;
public Colleague(Mediator mediator, String name) {
this.mediator = mediator;
this.name = name;
}
public Mediator GetMediator() {
return this.mediator;
}
public abstract void SendMessage(int stateChange);
}