java设计模式_中介者模式

本文通过一个具体的例子展示了调解者模式的应用,涉及两个国家(中国和美国)如何通过联合国安理会这一调解者来传递信息。

145420_JTWa_617909.png

/**
 * @Title: Country.java
 * @Package com.wangbiao.design.mediator
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-24 下午12:02:02 
 * @version V1.0
 */
package com.wangbiao.design.mediator;

/**
 * @Title: Country.java
 * @Package com.wangbiao.design.mediator
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-24 下午12:02:02 
 * @version V1.0
 */
public abstract class Country {

    public UnitedNationsMediator mediator;
    
    public Country() {
        // TODO Auto-generated constructor stub
    }
    
    public Country(UnitedNationsMediator mediator) {
        this.mediator = mediator;
    }
    
    public abstract void declare(String message);
    public abstract void getMessage(String message);
    
}


class China extends Country{
    
    public China(UnitedNationsMediator mediator) {
        super(mediator);
    }
    
    @Override
    public void getMessage(String message) {
        System.out.println("中国收到消息 : "+message);
    }

    @Override
    public void declare(String message) {
        mediator.declare(message, this);
    }
    
}

class USA extends Country{
    
    public USA(UnitedNationsMediator mediator) {
        super(mediator);
    }

    @Override
    public void getMessage(String message) {
        System.out.println("美国收到消息 : "+message);
    }

    @Override
    public void declare(String message) {
        mediator.declare(message, this);
    }
    
}


package com.wangbiao.design.mediator;

/**
 * 
 * @Title: UnitedNationsMediator.java
 * @Package com.wangbiao.design.mediator
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-24 下午01:57:02 
 * @version V1.0
 */

public abstract class UnitedNationsMediator {

    public abstract void declare(String message,Country country);
    
}

class UnitedNationSecurityCouncil extends UnitedNationsMediator{
    
    private China china;
    private USA usa;
    
    public China getChina() {
        return china;
    }

    public void setChina(China china) {
        this.china = china;
    }

    public USA getUsa() {
        return usa;
    }

    public void setUsa(USA usa) {
        this.usa = usa;
    }

    @Override
    public void declare(String message, Country country) {
        
        if (country instanceof China) {
            usa.getMessage(message);
        }else {
            china.getMessage(message);
        }
        
    }

}


/**
 * @Title: Client.java
 * @Package com.wangbiao.design.mediator
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-24 下午01:56:55 
 * @version V1.0
 */
package com.wangbiao.design.mediator;

/**
 * @Title: Client.java
 * @Package com.wangbiao.design.mediator
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-24 下午01:56:55 
 * @version V1.0
 */
public class Client {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        UnitedNationSecurityCouncil mediator = new UnitedNationSecurityCouncil();
        
        China country1 = new China(mediator);
        USA country2 = new USA(mediator);
        
        mediator.setChina(country1);
        mediator.setUsa(country2);
        
        country2.declare("为什么你每年的军费这么多?");
        country1.declare("管你屁事");
    }

}


转载于:https://my.oschina.net/u/617909/blog/318208

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值