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

    国家之间关系复杂,但是有了联合国了以后,大家都到联合国上解决问题,这就是中介者。

    1.college1 和college2之间是不可见的,也就是不会直接通信

    2.ConcreateMedia 和各College之间是直接相关的。

    这样college1 和college2之间的交流可以通过ConcreateMedia来实现。

    package com.jayfulmath.designpattern.agency;
    
    public abstract class UnitedNation {
        
        public abstract void Declare(String message,Country college);
    }
    package com.jayfulmath.designpattern.agency;
    
    public class UNSC extends UnitedNation {
    
        public USA usa;
        public Iraq iraq;
        
        
        @Override
        public void Declare(String message, Country college) {
            if(college == usa)
            {
                iraq.GetMessage(message);
            }
            else if(college == iraq)
            {
                usa.GetMessage(message);            
            }
        }
    
    }
    public abstract class Country {
        UnitedNation unitedNation;
        
        public Country(UnitedNation mediator)
        {
            this.unitedNation = mediator;
            
        }
    }
    package com.jayfulmath.designpattern.agency;
    
    public class Iraq extends Country {
    
        public Iraq(UnitedNation mediator) {
            super(mediator);
            
        }
    
        public void Declare(String message)
        {
            this.unitedNation.Declare(message, this);
        }
        
        public void GetMessage(String message)
        {
            System.out.println("Iraq get message:"+message);
        }
    }
    public class USA extends Country {
    
        public USA(UnitedNation mediator) {
            super(mediator);
            
        }
        
        public void Declare(String message)
        {
            this.unitedNation.Declare(message, this);
        }
        
        public void GetMessage(String message)
        {
            System.out.println("USA get message:"+message);
        }
    }
    package com.jayfulmath.designpattern.agency;
    
    import com.jayfulmath.designpattern.main.BasicExample;
    
    /*代理模式的优点:可以减少多个College之间的相互关系,可以独立的改变College 和mediator
     * 缺点:就是ConcreateMediator责任太多,耦合性低。
     * 
     * */
    public class AgencyMain extends BasicExample {
    
        @Override
        public void startDemo() {
            UNSC unsc = new UNSC();
            
            USA usa  = new USA(unsc);
            Iraq iraq = new Iraq(unsc);
            unsc.usa = usa;
            unsc.iraq = iraq;
            
            usa.Declare("Do not using neclear weapons");
            iraq.Declare("we have not neclear weapons");
        }
    
    }

    使用场景:就是集中处理交互关系,比如各个同等类之间的交互。

  • 相关阅读:
    面试常见问题汇总
    java static变量及函数
    java自定义注解及其信息提取
    testNG 注释实例
    让我欲罢不能的node.js
    利用html 5 websocket做个山寨版web聊天室(手写C#服务器)
    html5 Web Workers
    html5 postMessage解决跨域、跨窗口消息传递
    C# socket编程实践——支持广播的简单socket服务器
    简单理解Socket
  • 原文地址:https://www.cnblogs.com/deman/p/4201365.html
Copyright © 2011-2022 走看看