中介者模式
一、中介者模式介绍
1、定义与类型
定义一个封装一组对象如何交互的对象
通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互
类型:行为型
2、适用场景
系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解
交互的公共行为,如果需要改变行为则可以增加新的中介者类
3、优点
将一对多转化成了一对一、降低程序复杂度
类之间解耦
4、缺点
中介者过多,导致系统复杂
5、相关设计模式
中介者模式和观察者模式:这两者经常结合使用
二、代码示例
模拟场景:用户在聊天室内聊天
用户类:
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);
}
}
聊天室类:
public class StudyGroup {
public static void showMessage(User user, String message){
// 此处可结合观察者模式进行通知
System.out.println(new Date().toString() + "[" + user.getName() + "]" + message);
}
}
测试类:
public class Test {
public static void main(String[] args) {
User tom = new User("tom");
User jery = new User("jery");
tom.sendMessage("hi");
jery.sendMessage("hello");
}
}
输出:
Mon May 25 20:31:04 CST 2020[tom]hi
Mon May 25 20:31:04 CST 2020[jery]hello
三、源码示例
1、JDK中的Timer