zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    第五章4
    第五章3
    第五章2
    第五章1
    第四章14
    第四章13
    第四章12
    第四章11
    第五章例5-6
    第五章例5-4
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/11002514.html
Copyright © 2011-2022 走看看