首页 > 其他 > 详细

中介者模式

时间:2019-03-02 14:53:46      阅读:148      评论:0      收藏:0      [点我收藏+]

一、定义

封装了一组对象如何交互的对象

补充定义:通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互

类型:行为型

 

二、适用场景

1、系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解

2、交互的公共行为,如果需要改变行为则可以增加新的中介者类。

(聊天室:其中一个人说一句话,会通知聊天室里的所有人。如果没有中介者,则要对所有人说一遍)

 

三、中介者模式-优点

1、将一对对转化为一对一,降低程序复杂度

2、类之间解耦(在聊天室说话,假设有10个人,其中一个人要对剩余的9个人说,这样他们是耦合在一起的。如果只对聊天室说,这样就解耦了)

 

四、中介者模式-缺点

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

 

五、中介者模式-相关设计模式

1、中介者模式和观察者模式

使用观察者模式,实现中介者模式中的角色间通讯。

 

六、Coding

场景:学习的时候,有一个学习群(如QQ群),大家交流都通过这个群来实现

1、用户类

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 sendMesssage(String message){
        StudyGroup.showMessage(this, message);
    }
}

 

2、学习群类

public class StudyGroup {

    public static void showMessage(User user, String message){
        System.out.println(new Date().toString() + " [" + user.getName() + "] : " + message);
    }
}

 

3、测试

 

public class Test {
    public static void main(String[] args) {
        User larry = new User("larry");
        User nick = new User("nick");

        larry.sendMesssage("Hello world");
        nick.sendMesssage("Yes");
    }
}

  

结果

技术分享图片

 

4、UML图

技术分享图片

 

 

 七、源码中的使用

1、JDK中的Java.util 下的计时器类Timer

里面有很多schedule方法,最后调用sched方法

技术分享图片

Timer就相当一个中介者,TimerTask相当于一个用户。

技术分享图片

 

中介者模式

原文:https://www.cnblogs.com/linlf03/p/10461011.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!