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

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

  • 相关阅读:
    第20月第30日 集体智慧编程
    第20月第29天 cocoa抽象工厂 cocoapods组件化 cocoapods升级
    第20月第28天 tensorflow
    第20月第27天 游戏编程的人工智能
    第20月第22天 2016计算机大会后记——机器学习:发展与未来
    第20月第18天 小码哥swift
    第20月第17天 mvvm 多次点击push -ObjC
    第20月第14天 objc_getAssociatedObject _cmd
    第20月第9天 paddlepaddle
    第20月第4天 pycharm utf-8
  • 原文地址:https://www.cnblogs.com/deman/p/4201365.html
Copyright © 2011-2022 走看看