中介者模式,终结者的缔造者!

151 阅读3分钟

​ 今天想和大家讨论下中介者模式,中介者模式是啥捏?设计模式有三大类,一类是创建型模式,第二类是行为型模式,最后一类是结构型模式,中介者模式属于哪一种呢?看完本篇文章,你就懂啦!

​ 那什么是中介者模式,它适合什么场景,如何实现,有哪些优缺点?听洪爵一一道来。

​ 中介者模式是用来降低对象和对象之间通信的复杂性提供一个中介类来给大家进行交互。啥意思?最初的时候,人们想要以物换物,都是通过点对点的进行交易,比如说A今天找到B,想用一个牛头换一个B的羊头。慢慢的,随着时代的进步,逐步演化成了一个固定地方进行交易,大家想要交易换取其他伙伴物件的可以来到一个共同的地方,效率高,而且好维护

​ 中介者模式在很多场景都有应用,比如说聊天室,像QQ,Wechat等,一个群组就是一个中介者对象,提供一个场所供大家交换信息;WTO,联合国,世界卫生组织都是这样的产物。

​ 很明显了,中介者模式是属于行为型模式松耦合,这类模式更关注对象之间的通信。

​ 那如何做呢?我们拿聊天室举一个例子,首先我们需要有一个中介类,一个大家可以交互的场所WeChatRoom,第二个需要有参与者RoomUser,紧接着就是实现RoomUser之间如何进行通信了。

类图:

在这里插入图片描述

具体代码实现:

public class WeChatRoom {

    public static Map<RoomUser, String> userMappingGroupChat = new ConcurrentHashMap<>();

    public static void printMessage(RoomUser roomUser, String message) {
        String groupChart = userMappingGroupChat.get(roomUser);
        if(Objects.isNull(groupChart)) {
            return;
        }
        System.out.println(new Date().toString() + " " + roomUser.getName() + "向" + groupChart + "发送一条消息: " + message);
    }
}

public class RoomUser {

    private String name;

    public RoomUser(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void sendMessage(String message) {
        WeChatRoom.printMessage(this, message);
    }
}

public class Client {
    public static void main(String[] args) {
        RoomUser baidu = new RoomUser("baidu");
        RoomUser tenCent = new RoomUser("tenCent");
        RoomUser google = new RoomUser("google");

        WeChatRoom.userMappingGroupChat.put(baidu, "群聊1");
        WeChatRoom.userMappingGroupChat.put(tenCent, "群聊1");
        WeChatRoom.userMappingGroupChat.put(google, "群聊2");

        baidu.sendMessage("hello everybody!");
        tenCent.sendMessage("i can hear you clearly");
        google.sendMessage("i can protobuf!!!");
    }
}
/*
Mon Oct 11 23:48:20 CST 2021 baidu向群聊1发送一条消息: hello everybody!
Mon Oct 11 23:48:20 CST 2021 tenCent向群聊1发送一条消息: i can hear you clearly
Mon Oct 11 23:48:20 CST 2021 google向群聊2发送一条消息: i can protobuf!!!
*/

​ 中介者模式的优点降低了类的复杂度,各个类之间实现了解耦

​ 中介者模式可能很多人没有听过,因为这是2018年才公布的计算机科学技术名词呀!

​ 好了,本章节就到这里了,希望对你有所帮助! 在这里插入图片描述 愿每个人都能带着怀疑的态度去阅读文章并探究其中原理。

道阻且长,往事作序,来日为章。

期待我们下一次相遇!