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

    一、中介者模式介绍

    1、定义与类型

    定义一个封装一组对象如何交互的对象
    通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互
    类型:行为型

    2、适用场景

    系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解
    交互的公共行为,如果需要改变行为则可以增加新的中介者类

    3、优点

    将一对多转化成了一对一、降低程序复杂度
    类之间解耦

    4、缺点

    中介者过多,导致系统复杂

    5、相关设计模式

    中介者模式和观察者模式:这两者经常结合使用

    二、代码示例

    模拟场景:用户在聊天室内聊天

    用户类:

    public class User {
        private String name;
    
        public User(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void sendMessage(String message){
            StudyGroup.showMessage(this, message);
        }
    }
    

    聊天室类:

    public class StudyGroup {
        public static void showMessage(User user, String message){
            // 此处可结合观察者模式进行通知
            System.out.println(new Date().toString() + "[" + user.getName() + "]" + message);
        }
    }
    

    测试类:

    public class Test {
        public static void main(String[] args) {
            User tom = new User("tom");
            User jery = new User("jery");
    
            tom.sendMessage("hi");
            jery.sendMessage("hello");
        }
    }
    

    输出:
    Mon May 25 20:31:04 CST 2020[tom]hi
    Mon May 25 20:31:04 CST 2020[jery]hello

    三、源码示例

    1、JDK中的Timer

  • 相关阅读:
    Uploadify跨域上传原理
    C#中HttpClient使用注意:预热与长连接
    前端必读:浏览器内部工作原理
    从零开始学习jQuery
    ManualResetEvent 类的用法
    线程池用法的改进
    我的第一篇博客
    Es6新语法 let篇
    如何测试解析是否生效?
    主机记录和记录值(域名服务器绑定详解)
  • 原文地址:https://www.cnblogs.com/weixk/p/13228453.html
Copyright © 2011-2022 走看看