public class MediatorTest1
{
public static void main(String[] args)
{
ConcreteMediator m = new ConcreteMediator();
ConcreteColleague1 c1 = new ConcreteColleague1(m);
ConcreteColleague2 c2 = new ConcreteColleague2(m);
m.setColleague1(c1);
m.setColleague2(c2);
c1.Send("饭吃过了吗?");
c2.Send("没有呢,你打算请客");
System.out.println();
}
}
abstract class Mediator
{
abstract 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 void setColleague1(ConcreteColleague1 colleague1)
{
this.colleague1 = colleague1;
}
public void setColleague2(ConcreteColleague2 colleague2)
{
this.colleague2 = colleague2;
}
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);
}
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);
}
public void Send(String message)
{
mediator.Send(message,this);
}
public void Notify(String message)
{
System.out.println("同事2得到信息: "+message);
}
}
USA c1 = new USA(UNSC);
Iraq c2 = new Iraq(UNSC);
UNSC.setColleague1(c1);
UNSC.setColleague2(c2);
c1.Declare("不准研制核武器,否则要发动战争");
c2.Declare("我们没有核武器,也不怕侵略");
System.out.println();
}
}
abstract class UnitedNations
{
abstract public void Declare(String message,Country colleague);
}
abstract class Country
{
protected UnitedNations mediator;
public Country(UnitedNations mediator)
{
this.mediator = mediator;
}
}
class USA extends Country
{
public USA(UnitedNations mediator)
{
super(mediator);
}
public void Declare(String message)
{
mediator.Declare(message,this);
}
public void GetMessage(String message)
{
System.out.println("美国获得对方性息:"+ message);
}
}
class Iraq extends Country
{
public Iraq(UnitedNations mediator)
{
super(mediator);
}
public void Declare(String message)
{
mediator.Declare(message,this);
}
public void GetMessage(String message)
{
System.out.println("伊拉克获得对方性息:"+ message);
}
}
class UnitedNationSecurityCouncil extends UnitedNations
{
public USA colleague1;
public Iraq colleague2;
public void setColleague1(USA colleague1)
{
this.colleague1 = colleague1;
}
public void setColleague2(Iraq colleague2)
{
this.colleague2 = colleague2;
}
public void Declare(String message,Country colleague)
{
if(colleague == colleague1)
{
colleague2.GetMessage(message);
}
else
{
colleague1.GetMessage(message);
}
}
}