您的位置:首页 > 编程语言 > Java开发

java设计模式_中介者模式

2014-09-24 00:00 260 查看
摘要: 中介者模式,用一个中介对象来封装一系列类之间的相互调用,这样不同类就不用显示地相互调用,从而降低了耦合度,而且可以独立改变相互调用。其实这样是把相互调用的逻辑复杂性搬到了中介者对象里面了,降低了相互调用对象间的耦合,但是如果相互调用的逻辑过于复杂,将会导致中介者逻辑非常复杂,因为中介者逻辑里面包含了所有类的相互调用逻辑复杂度。



/**
* @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("管你屁事");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: