1.15(设计模式)中介者模式

中介者模式主要解决多个对象和类之间的通信复杂度,主要通过一个中介类接受所有消息,然后再进行转发。

这样可以降低多个对象和类之间的通信复杂度,由原来的网状接口转变为星型结构。

           网状结构                                            星型结构

图片来自:   https://www.runoob.com/design-pattern/mediator-pattern.html   zml1234

想象一下,如果上图中六个对象是聊天室中六个人,如果不采用中介模式,那么对象1要想其他所有对象发送消息,对象而也是如此。

这样对象多了后,通信的过程很复杂,而且结构混乱不利于后期维护。

我们在这里使用一个中介,所有对象都将消息发送给中介者,然后由中介者进行转发。

这样了不仅结构清晰,而且后期维护也方便。

接下来看一个例子

中介类

import java.util.Date;

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

聊天室用户

User

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

测试

public class Main {
    public static void main(String[] args) {
        User hcf = new User("hcf");
        User zrx = new User("zrx");
        hcf.sendMessage("你好!zrx");
        zrx.sendMessage("你好,hcf");
    }
}
运行结果:
Tue Jun 11 11:16:28 CST 2019 [hcf] : 你好!zrx Tue Jun 11 11:16:28 CST 2019 [zrx] : 你好,hcf

参考资料:

https://www.runoob.com/design-pattern/mediator-pattern.html

原文地址:https://www.cnblogs.com/huang-changfan/p/11002514.html