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");
        }
    }
  • 相关阅读:
    Java 应用性能调优实践
    Java序列化——实现Serializbale接口
    Bootstrap3快速使用
    C语言程序设计_zju——记录1
    《图解密码技术》——记录1
    电脑win10蓝屏,INACCESSIBLE BOOT DEVICE,处理方法
    读书笔记之《如何高效学习》
    读书笔记之《番茄工作法图解》
    读书笔记之《富爸爸与穷爸爸》
    读书笔记之《微习惯》
  • 原文地址:https://www.cnblogs.com/fuyuanming/p/5797637.html
Copyright © 2011-2022 走看看