设计模式--中介者模式
中介者模式
定义:定义一个封装一组对象如何交互的对象
通过使对象明确地相互引用来促使松散耦合,并允许独立地改变它们地交互
场景举例,有一个QQ群,我发送消息只需要发送到这个群里,不需要给群里的每个成员发送一遍。再比如,发送消息时,对消息敏感词汇的过滤等。
类似:行为型
适用场景:(1)系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解,(2)交互的公共行为,如果需要改变行为则可以增加新的中介者类
优点:(1)将一对多转化成了一对一,降低程序复杂度,(2)类之间的解耦
缺点:(1)中介者过多,导致系统复杂
中介者模式 | 两者经常会结合使用 |
观察者模式 |
代码
// 每个 class 都对应一个 .java 文件
public class StudyGroup {
public static void showMessage(User user, String message){
System.out.println(new Date().toString() + " [" + user.getName() + "] : " + message);
}
}
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String name) {
this.name = name;
}
public void sendMessage(String message) {
StudyGroup.showMessage(this, message);
}
}
// 测试类
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 learn Design Pattern");
tom.sendMessage("OK! Geely");
}
}
UML类图
源码示例
在 java.util 包中的 Timer 类