一、课本例子:联合国安理会做中介者:
UML图(自己画 vs 自动生成):自己的描述不准确。。。
代码实现:
package 安理会;
public abstract class UniteNations {
public abstract void declare(String message,Country country);
}
package 安理会;
public class UnitedSecurity extends UniteNations {
private Country ctry1=null;
private Country ctry2=null;
@Override
public void declare(String message, Country country) {
if(country.equals(ctry1)) {
ctry2.accept(message);
}else {
ctry1.accept(message);
}
}
public Country getCtry1() {
return ctry1;
}
public void setCtry1(Country ctry1) {
this.ctry1 = ctry1;
}
public Country getCtry2() {
return ctry2;
}
public void setCtry2(Country ctry2) {
this.ctry2 = ctry2;
}
}
package 安理会;
public abstract class Country {
protected UniteNations un=null;
public Country(UniteNations un) {
this.un = un;
}
public abstract void declare(String message);
public abstract void accept(String message);
}
package 安理会;
public class Iraq extends Country {
public Iraq(UniteNations un) {
super(un);
// TODO Auto-generated constructor stub
}
@Override
public void declare(String message) {
un.declare(message, this);
}
@Override
public void accept(String message) {
System.out.println("Iraq收到消息"+message);
}
}
package 安理会;
public class USA extends Country {
public USA(UniteNations un) {
super(un);
// TODO Auto-generated constructor stub
}
@Override
public void declare(String message) {
un.declare(message, this);
}
@Override
public void accept(String message) {
System.out.println("USA收到消息"+message);
}
}
package 安理会;
public class Client {
public static void main(String[] args) {
UnitedSecurity us=new UnitedSecurity();
Country c1=new USA(us);
Country c2=new Iraq(us);
us.setCtry1(c1);
us.setCtry2(c2);
c1.declare("不要核武器!");
c2.declare("我们没有核武器!");
}
}
THE END;