美文网首页
中介者模式,它的重点在哪儿?

中介者模式,它的重点在哪儿?

作者: 程就人生 | 来源:发表于2022-05-07 06:47 被阅读0次

中介者模式,它的重点在哪儿,你能说说吗?

中介者模式和代理模式,该如何区分呢?

中介者模式(Mediator Pattern),用来降低多个对象和类之间的通信复杂度,通过一个中介者处理不同类之间的通信。它是一种行为型模式。

中介者模式的重点:处理不同类之间的通信。

业务场景:想通过一个中间类来处理多个类中的行为。

关键代码:同级对象之间的通信封装到一个类中处理。

下面看UML类图:


类图说明:两个单独的类,一个用户类,一个聊天室。聊天室类充当中介者,负责用户之间的通信。

代码实现步骤:
1.用户类;

/**
 * 1. 用户
 * @author 程就人生
 * @Date
 */
public class User {
  // 用户名称
  private String name;  
  
  public User(String name) {
    this.name = name;
  }  
  // 发送消息
  public void sendMessage(String msg){
    ChatRoom.sendMessage(this, msg);
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
}

2. 中介者聊天室;

/**
 * 2.中介者,聊天室
 * @author 程就人生
 * @Date
 */
public class ChatRoom {

  // 发送消息
  public static void sendMessage(User user, String msg){
    System.out.println(user.getName() + ":" + msg);
  }  
}

3.测试代码;

public static void main(String[] argo){
    new User("张三").sendMessage("今晚吃鸡吗?");
    
    new User("李四").sendMessage("没问题,老时间不见不散!");
    
    new User("王五").sendMessage("抱歉,我要陪女友!");
    
    new User("赵柳").sendMessage("哎,重色轻友,没救了!");
  }

运行结果:

张三:今晚吃鸡吗?
李四:没问题,老时间不见不散!
王五:抱歉,我要陪女友!
赵柳:哎,重色轻友,没救了!

这段代码的意思是:用户通过聊天室向朋友们发送消息,聊天室充当了中介者角色,聊天室统一处理用户间的信息发送。

最后总结

中介者模式,重在同级对象之间的通信。它使用一个类来处理同级对象之间的通信行为。从而很好地把网状结构分离成星型结构。

思考题:现在你看出来,它和代理模式的区别了吗?

相关文章

网友评论

      本文标题:中介者模式,它的重点在哪儿?

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