zoukankan      html  css  js  c++  java
  • 设计模式-中介者模式(Mediator)

    /**
    *中介者模式在消息队列中的应用
    */
    package
    test.mediator; public abstract class Message { private Messages messages; public void sendMessage(String messageFrom,String messageTo){ messages.send(messageFrom, messageTo); } public abstract void receiveMessage (Message messageFrom); public abstract String getName(); public Messages getMessages(){ return messages; } public void setMessages(Messages messages){ this.messages=messages; } }
    package test.mediator;
    
    public class Message1 extends Message{
    
        @Override
        public void receiveMessage(Message messageFrom) {
            System.out.println(messageFrom.getName()+"堵塞了"+getName()); 
        }
    
        @Override
        public String getName() {
            return "消息队列1";
        }
    
    }
    package test.mediator;
    
    public class Message2 extends Message{
    
        @Override
        public void receiveMessage(Message messageFrom) {
            System.out.println(messageFrom.getName()+"堵塞了"+getName()); 
        }
    
        @Override
        public String getName() {
            return "消息队列2";
        }
    
    }
    package test.mediator;
    
    /**
     * 消息接口
     * @author lenovo
     *
     */
    public interface Messages {
        void send(String messageFrom,String messageTo);
        void add(Message message);
    }
    package test.mediator;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class MessagesImpl implements Messages {
        
        @SuppressWarnings("rawtypes")
        private Map map=new HashMap();
        
        @Override
        public void send(String messageFrom, String messageTo) {
            Message message1=(Message)map.get(messageFrom);
            Message message2=(Message)map.get(messageTo);
            message2.receiveMessage(message1);
        }
    
        @SuppressWarnings("unchecked")
        @Override
        public void add(Message message) {
            message.setMessages(this);
            map.put(message.getName(), message);
        }
    
    }
    package test.mediator;
    
    public class Client {
        public static void main(String[] args) {
            Messages messages=new MessagesImpl();
            Message a=new Message1();
            Message b=new Message2();
            messages.add(a);
            messages.add(b);
            a.sendMessage("消息队列1", "消息队列2");
        }
    }
  • 相关阅读:
    一个程序员的负罪感
    【软件安装记录篇】本地虚拟机Centos7快速安装MySQL
    三分钟熟悉进制转换与位运算
    Base64 编码原理
    Java 注解
    数据结构之链表-动图演示
    数据结构之红黑树-动图演示(下)
    数据结构之红黑树-动图演示(上)
    通过TreeMap 和 冒泡算法对JSON 进行排序
    Quartz 之 windowService
  • 原文地址:https://www.cnblogs.com/fuyuanming/p/5797637.html
Copyright © 2011-2022 走看看