美文网首页
浅谈设计模式之【中介者模式】| Java,ES6语法

浅谈设计模式之【中介者模式】| Java,ES6语法

作者: 阿南的生活记录 | 来源:发表于2018-09-05 15:56 被阅读0次

【中介者模式】
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。

意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。
何时使用:多个类相互耦合,形成了网状结构。

优点: 1、降低了类的复杂度,将一对多转化成了一对一。 2、各个类之间的解耦。 3、符合迪米特原则。

缺点: 中介者会庞大,变得复杂难以维护。

使用场景: 1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。 2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

image.png

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);
   }
}

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);
   }
}

/*
*使用 User 对象来显示他们之间的通信。
*/
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!");
   }
}
UML

ES6

/**
 * 中介者模式
 */
 class ChatRoom {
     constructor () {
         
     }
     
     static showMessage (user, message) {
         console.log(new Date(), user.getName(), message)
     }
 }
 
 class User {
     constructor (name){
         this.name = name
     }
     setName () {
         this.name = name
     }
     getName() {
        return this.name
     }
     sendMessage (message) {
        ChatRoom.showMessage(this, message)
     }
 }
 
 {
     let tom = new User("Tom Zhang");
     tom.sendMessage("My name is Tom")
     
     let jack = new User("Jack Chen")
     jack.sendMessage("My name is Jack")
 }

浅谈设计模式之【模板模式】| Java,ES6语法
浅谈设计模式之【观察者模式】| Java,ES6语法
浅谈设计模式之【状态模式】| Java,ES6语法

参考文献:

相关文章

网友评论

      本文标题:浅谈设计模式之【中介者模式】| Java,ES6语法

      本文链接:https://www.haomeiwen.com/subject/uuiawftx.html