模式定义
中介者模式将多对多相互作用转化为一对多的相互作用。将对象的协作抽象化
使用场景
- 系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象
- 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类
例子
定义中介类
public class ChatRoom {
public static void showMessage(User user, String message){
System.out.println(" [" + user.getName() +"] : " + message);
}
}
创建user类
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){
ChatRoom.showMessage(this,message);
}
}
使用 User 对象来显示他们之间的通信
User robert = new User("Robert");
User john = new User("John");
robert.sendMessage("Hi! John!");
john.sendMessage("Hello! Robert!");
输出:
[Robert] : Hi! John!
[John] : Hello! Robert!
总结
优点:
- 降低了类的复杂度,将一对多转化成了一对一
- 各个类之间的解耦
- 符合迪米特原则
缺点:
- 中介者会庞大,变得复杂难以维护