package liu.mediator.demo;
public abstract class UniteNations {
public abstract void Declare(String message,Country colleague);
} ----------------------------------------- package liu.mediator.demo;
public class UnitedNationsSecurityCouncil extends UniteNations{
private USA colleague1;
private Iraq colleague2; @Override public void Declare(String message, Country colleague) { if(colleague==colleague1){ colleague2.GetMessage(message); } else{ colleague1.GetMessage(message); } }
public void setColleague1(USA colleague1) {
this.colleague1 = colleague1; } public void setColleague2(Iraq colleague2) { this.colleague2 = colleague2; } } ----------------------------------------- package liu.mediator.demo;
public class USA extends Country{
public USA(UniteNations mediator) {
super(mediator); }
//声明
public void Declare(String message){ mediator.Declare(message, this); } //获得消息 public void GetMessage(String message){ System.out.println("美国获得对方的消息:"+message); } } ----------------------------------------- package liu.mediator.demo;
public abstract class Country {
protected UniteNations mediator;
public Country(UniteNations mediator){ this.mediator = mediator; } } ----------------------------------------- package liu.mediator.demo;
public class Iraq extends Country{
public Iraq(UniteNations mediator) {
super(mediator); }
//声明
public void Declare(String message){ mediator.Declare(message, this); } //获得消息 public void GetMessage(String message){ System.out.println("伊朗获得对方的消息:"+message); } } ----------------------------------------- package liu.mediator.demo;
public class Main {
/**
* 中介者模式 */ public static void main(String[] args) { UnitedNationsSecurityCouncil UNSC = new UnitedNationsSecurityCouncil(); USA c1 = new USA(UNSC); Iraq c2 = new Iraq(UNSC); UNSC.setColleague1(c1); UNSC.setColleague2(c2); c1.Declare("不准研制核武器,否则要发动战争"); c2.Declare("我们没有核武器,也不怕侵略");
}
}
|
设计模式之中介者模式,mediator
最新推荐文章于 2024-08-15 14:27:30 发布