设计模式--中介者模式

中介者模式

定义:定义一个封装一组对象如何交互的对象

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

场景举例,有一个QQ群,我发送消息只需要发送到这个群里,不需要给群里的每个成员发送一遍。再比如,发送消息时,对消息敏感词汇的过滤等。

类似:行为型

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

优点:(1)将一对多转化成了一对一,降低程序复杂度,(2)类之间的解耦

缺点:(1)中介者过多,导致系统复杂

中介者模式 两者经常会结合使用
观察者模式

 

代码

// 每个 class 都对应一个 .java 文件

public class StudyGroup {

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


// 测试类
public class Test {
    public static void main(String[] args) {
        User geely = new User("Geely");
        User tom= new User("Tom");

        geely.sendMessage(" Hey! Tom! Let's learn Design Pattern");
        tom.sendMessage("OK! Geely");
    }
}

 

UML类图

设计模式--中介者模式

 

源码示例

在 java.util 包中的 Timer 类