您的位置:首页 > 其它

设计模式之中介者模式

2010-06-15 21:07 260 查看
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);
	}
}






public class MediatorTest2
{
	public static void main(String[] args)
	{
		UnitedNationSecurityCouncil UNSC = new UnitedNationSecurityCouncil();

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