本设计模式资料源于慕课网,讲师:Geely 《Java设计模式精讲 Debug方式+内存分析》,本人作为自己手打整理作为学习的归纳总结。
一,模式介绍
1,定义和类型
- 定义:定义一个封装一组对象如何交互的对象
- 通过使对象明确的相互引用来促进松散耦合,并允许独立地改变它们的交互
- 类型:行为型
2,适用场景
- 系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解
- 交互的公共行为,如果需要改变行为则可以增加新的中介者类
3,优点
- 将一对多转化成了一对一,降低程序复杂度
- 类之间解耦
4,缺点
- 中介者过多,导致系统复杂
5,相关设计模式
- 中介者模式和观察者模式
二,代码演示
- 业务场景
实现一个小组内的各个成员向所有人发送消息
中介者类
package com.try1.design.behavioral.mediator;
import java.util.Date;
public class StudyGroup {
public static void showMessage(User user,String message){
System.out.println(new Date().toString()+"["+user.getName()+"]:"+message);
}
}
用户类
package com.try1.design.behavioral.mediator;
public class User {
private String name;
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void sendMessage(String message){
StudyGroup.showMessage(this,message);
}
}
测试类
package com.try1.design.behavioral.mediator;
public class Test {
public static void main(String[] args) {
User geely=new User("Geely");
User tom=new User("Tom");
geely.sendMessage("Hey Tom!,let's study design model");
tom.sendMessage("OK!,Geely");
}
}
运行截图
三,小结
- 中介者模式的中介就在于,小组的成员发消息时都是向他们内部的中介者进行交互,而不是向某个或者全部成员发送,这样简化了步骤。