定义一个 封装一组对象 如何 交互 的对象;
适用场景:
- 引用关系复杂:系统中 对象之间 存在 复杂的 引用关系,产生的 相互依赖关系 结构混乱,难以理解;
- 改变行为:交互的 公共行为,如果 需要 改变行为,可以 增加新的 中介者类;( 通过增加新的中介者类,达到扩展的目的 )
优点:
- 降低复杂度:将 一对多 转化为 一对一,降低了 程序复杂程度;如:聊天室中有 8 个人,如果要一对一进行交互,需要交互 7 次; 使用了中介者模式后,变成一对一,只要将交互内容交给中介者就可以了,中介者负责与其余 7 人进行交互;
- 解耦:实现了 类之间的解耦 操作;如:聊天室中有 8 个人,每个人都需要耦合另外 7 个,即持有另外 7 个对象,使用了中介者模式之后,8 个人只需要持有 中介者 对象即可,8 个人之间不再进行相互耦合;
缺点:如果在 业务场景 中 中介者 数量过多,会导致系统 复杂性增加;
类图
代码
class Boy {
constructor(mediator) {
this.mediator = mediator;
this.salary = 1000;
}
learnGirl() {
this.mediator.learnGirl();
}
}
class Girl {
constructor(mediator) {
this.mediator = mediator;
this.age = 28;
}
learnBoy() {
this.mediator.learnBoy();
}
}
class Mediator {
constructor(boy, girl) {
this.boy = boy;
this.girl = girl;
}
learnBoy() {
console.log(`这个男孩月薪${this.boy.salary * 10}`);
}
learnGirl() {
console.log(`这个女孩年龄${this.girl.age - 10}`);
}
}
let boy = new Boy();
let girl = new Girl();
let mediator = new Mediator(boy, girl);
boy.mediator = mediator;
girl.mediator = mediator;
boy.learnGirl();
girl.learnBoy();
打赏作者
您的打赏是我前进的动力
微信
支付宝
备忘录模式
上一篇
评论