简介
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其松耦合,而且可以独立的改变它们之间的交互。
优点:
减少类之间的依赖,把原有的一对多的依赖变成了一对一的依赖,同时类之依赖中介者,减少了依赖,当然同时也降低了类间的耦合。
缺点:
中介者会膨胀的很大,而且逻辑复杂,原本N个对象直接相互依赖关系转换为终结者和同事类的依赖关系。同事类越多,中介者的逻辑就越复杂。
通用类图
使用菜鸟教程上的例子:
我们通过聊天室实例来演示中介者模式。实例中,多个用户可以向聊天室发送消息,聊天室向所有的用户显示消息。我们将创建两个类 ChatRoom 和 User。User 对象使用 ChatRoom 方法来分享他们的消息。
Client,我们的演示类使用 User 对象来显示他们之间的通信。
Java实现
创建ChatRoom
public class ChatRoom {
public static void showMessage(User user, String message){
System.out.println(new Date().toString()
+ " [" + user.getName() +"] : " + message);
}
}
创建user
public class User {
private String name;
public User(String name) {
this.name = name;
}
public User() {
}
public void sendMessage(String message){
ChatRoom.showMessage(this,message);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
场景类:
这里场景完全不知道user调用的是哪个类,就充当中介的角色
public class Client {
public static void main(String[] args){
User wqh = new User("wqh");
User root = new User("root");
wqh.sendMessage("root!");
root.sendMessage("wqh");
}
}