zoukankan      html  css  js  c++  java
  • 中介者模式

    描述

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

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

    实例

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

      

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

  • 相关阅读:
    UniConnector平台
    UniConnector平台
    UniChat 社交IM 集成环信
    移动办公OA App 工作流审批
    netcore 部署Docker
    .net core 腾讯短信发送
    Linux error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
    Linux nginx 自启动
    Linux 配置、问题
    Swagger自定义默认首页
  • 原文地址:https://www.cnblogs.com/K-artorias/p/7928176.html
Copyright © 2011-2022 走看看