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

  • 相关阅读:
    何谓算法
    大规模Web服务开发技术
    什么是依赖,什么是抽象
    智能Web算法
    算法评测
    好代码、坏代码之四
    SVN server setup 1
    Python正则表达式操作指南(re使用)(转)
    rpm package installation
    mysql install error:Make had returned bad status, install seems impossible
  • 原文地址:https://www.cnblogs.com/weixk/p/13228453.html
Copyright © 2011-2022 走看看