中介者模式
描述
中介者模式致力于降低多对象信息交互的复杂性,通过提供一个中介类,所有对象的信息都通过这个中介来交互。
使用场景:多类相互耦合,形成网状结构。
实例
一个简单的例子:假设有三个人A、B、C,这三个人共同做一个项目,那么就要相互商讨,假设这三个人互为微信好友,那么当A想表达某些想法时候,就要分别通知B和C,要每个人发送一遍他的想法,而如果B和C想讨论A的这个想法时就要把A发过来的想法复制发送给对方讨论,如果讨论出来了结果还要单独发送给A,这样很麻烦,现在三个人建一个群,大家所有的想法和讨论都在群里,就解决了上述那个复杂的问题。这个群就是一个很简单的中介,让三个因为项目耦合到一起的人交流起来边简单了。
//建立一个聊天室 import java.util.Date; public class ChatRoom { 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){ ChatRoom.showMessage(this,message); } } //测试类 public class MediatorPatternDemo { public static void main(String[] args) { User robert = new User("Robert"); User john = new User("John"); User Alice= new User("Alice"); robert.sendMessage("Hi! John!"); john.sendMessage("Hello! Robert!"); Alice.sendMessage("Hello! everyone!"); } }
运行结果:
Thu Jan 31 16:05:46 IST 2017 [Robert] : Hi! John! Thu Jan 31 16:05:46 IST 2017 [John] : Hello! Robert! Thu Jan 31 16:05:46 IST 2017 [John] : Hello! everyone!
代码来源:特别感谢 菜鸟教程之中介者模式