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

  • 相关阅读:
    Python 模拟登录几种常见方法
    python 中列表 元组 字典 集合的区别
    Python3(十二) Pythonic与Python杂记
    Python3(十一) 原生爬虫
    Python3(十) 函数式编程: 匿名函数、高阶函数、装饰器
    Python3(九) 闭包
    Python3(八) 枚举详解
    Python3(七) 正则表达式与JSON
    Python3(六) 面向对象
    labix.org/mgo包连接池泄漏问题
  • 原文地址:https://www.cnblogs.com/weixk/p/13228453.html
Copyright © 2011-2022 走看看