定义
同事中介者模式
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
ConcreteMediator m = new ConcreteMediator();
ConcreteColleague1 c1 = new ConcreteColleague1(m);
ConcreteColleague2 c2 = new ConcreteColleague2(m);
m.setColleague1(c1);
m.setColleague2(c2);
c1.Send("你吃饭了吗");
c2.Send("没有呢,你请客");
}
}
abstract class Mediator {
public void Send(String message, Colleague colleague) {
};
}
abstract class Colleague {
protected Mediator mediator;
/**
*
*/
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
}
class ConcreteMediator extends Mediator {
private ConcreteColleague1 colleague1;
private ConcreteColleague2 colleague2;
public ConcreteColleague1 getColleague1() {
return colleague1;
}
public void setColleague1(ConcreteColleague1 colleague1) {
this.colleague1 = colleague1;
}
public ConcreteColleague2 getColleague2() {
return colleague2;
}
public void setColleague2(ConcreteColleague2 colleague2) {
this.colleague2 = colleague2;
}
@Override
public void Send(String message, Colleague colleague) {
if (colleague == colleague1)
colleague2.Notify(message);
else
colleague1.Notify(message);
}
}
class ConcreteColleague1 extends Colleague {
public ConcreteColleague1(Mediator mediator) {
super(mediator);
// TODO
}
public void Send(String message) {
mediator.Send(message, this);
}
public void Notify(String message) {
System.out.println("同事1收到信息" + message);
}
}
class ConcreteColleague2 extends Colleague {
public ConcreteColleague2(Mediator mediator) {
super(mediator);
// TODO
}
public void Send(String message) {
mediator.Send(message, this);
}
public void Notify(String message) {
System.out.println("同事2收到信息" + message);
}
}
安理会做中介
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
UnitedNationsSecurityCouncil UNSC = new UnitedNationsSecurityCouncil();
USA c1 = new USA(UNSC);
Iraq c2 = new Iraq(UNSC);
UNSC.setColleague1(c1);
UNSC.setColleague2(c2);
c1.Declare("不准研制核武器,否则要发动战争!");
c2.Declare("我们没有核武器,也不怕侵略!");
}
}
abstract class UnitedNations {
public void Declare(String message, Country colleague) {
};
}
abstract class Country {
protected UnitedNations mediator;
/**
*
*/
public Country(UnitedNations mediator) {
this.mediator = mediator;
}
}
class UnitedNationsSecurityCouncil extends UnitedNations {
private USA colleague1;
private Iraq colleague2;
public void setColleague1(USA colleague1) {
this.colleague1 = colleague1;
}
public void setColleague2(Iraq colleague2) {
this.colleague2 = colleague2;
}
@Override
public void Declare(String message, Country colleague) {
if (colleague == colleague1)
colleague2.Getmessage(message);
else
colleague1.Getmessage(message);
}
}
class USA extends Country {
/**
* @param mediator
*/
public USA(UnitedNations mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}
public void Declare(String message) {
mediator.Declare(message, this);
}
public void Getmessage(String message) {
System.out.println("美国获得对方信息" + message);
}
}
class Iraq extends Country {
/**
* @param mediator
*/
public Iraq(UnitedNations mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}
public void Declare(String message) {
mediator.Declare(message, this);
}
public void Getmessage(String message) {
System.out.println("伊拉克获得对方信息" + message);
}
}