在多个对象或者类之间,中介者模式用来减少交流的复杂性。这个模式提供了一个中介者类,这个类正常地处理不同类之间的交流。通过松耦合性,它使得代码维护性更容易。中介者模式归属于行为型模式的范畴。
为了更好的阐述这个观念,我用一个实例来表达这个思想。
我创建了一个聊天室类ChartRoom,一个用户类User。用户发信息到ChatRoom中,而ChatRoom负责发送信息给所有的对象。UML类图如下所示:
创建中介者类ChatRoom.java
import java.util.Date; public class ChatRoom { public static void showMessage(User user, String message){ System.out.println(new Date().toString() + " [" + user.getName() +"] : " + message); } }
创建用户类User.java。
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); } }
测试类MediatorPatternDemo.java。
public class MediatorPatternDemo { public static void main(String[] args) { User robert = new User("Robert"); User john = new User("John"); robert.sendMessage("Hi! John!"); john.sendMessage("Hello! Robert!"); } }
输出结构:
Thu Jan 31 16:05:46 IST 2013 [Robert] : Hi! John! Thu Jan 31 16:05:46 IST 2013 [John] : Hello! Robert!
看上面的例子挺简单的,真正地难再中介类的信息推送策略上。这个策略如何设计,直接影响到程序的效率。
23钟经典的设计模式总算告一段落了,我有点轻松了。看看时间已经零点了,该休息了。应网友的要求,这个设计模式的博客比较简洁。但是,最重要的是理解某种设计模式的思想,这才是最重要的。多学习一下经典的实例,加上对中模式优越性的理解,这是学习的重点。将后来,我将介绍几个经典Java API的实例,与大家一起分享。