中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其松耦合,而且可以独立的改变它们之间的交互。
优点:
减少类之间的依赖,把原有的一对多的依赖变成了一对一的依赖,同时类之依赖中介者,减少了依赖,当然同时也降低了类间的耦合。
缺点:
中介者会膨胀的很大,而且逻辑复杂,原本N个对象直接相互依赖关系转换为终结者和同事类的依赖关系。同事类越多,中介者的逻辑就越复杂。
使用菜鸟教程上的例子:
我们通过聊天室实例来演示中介者模式。实例中,多个用户可以向聊天室发送消息,聊天室向所有的用户显示消息。我们将创建两个类 ChatRoom 和 User。User 对象使用 ChatRoom 方法来分享他们的消息。 Client,我们的演示类使用 User 对象来显示他们之间的通信。
创建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"); } }