中介者模式

描述

中介者模式致力于降低多对象信息交互的复杂性,通过提供一个中介类,所有对象的信息都通过这个中介来交互。

使用场景:多类相互耦合,形成网状结构。

实例

一个简单的例子:假设有三个人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!

  

代码来源:特别感谢 菜鸟教程之中介者模式

原文地址:https://www.cnblogs.com/K-artorias/p/7928176.html