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");
        }
    
    }

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

  • 相关阅读:
    RTMP直播流媒体服务-开放直播快速开启推流直播
    安防摄像头互联网直播方案LiveGBS设计文档
    GB28181开放流媒体服务平台LiveGBS实际测试时问题排查
    监控摄像头进行网页直播和微信直播的技术方案
    LiveQing云端直播点播-自定义直播快照存储提供基于图片的直播服务
    浏览器低延时播放监控摄像头视频(LiveNVR播放FLV视频流)
    Javascript之计时
    Android之记账本
    Android之布局
    CSS之动态相册
  • 原文地址:https://www.cnblogs.com/deman/p/4201365.html
Copyright © 2011-2022 走看看