设计模式 中介者模式

先写一个工友抽象


public abstract class Colleague {

	protected Mediator mediator;
	
	public Colleague(Mediator mediator)
	{
		this.mediator=mediator;
	}
}

再写两个工友类继承工友


public class ConcreteColleague1 extends Colleague {

	public ConcreteColleague1(Mediator mediator) {
		super(mediator);
		// TODO Auto-generated constructor stub
	}
	
	public void Send(String message)
	{
		mediator.Send(message, this);
	}
	
	public void Notify(String message)
	{
		System.out.println("同事1得到信息:"+message);
	}

}



public class ConcreteColleague2 extends Colleague {

	public ConcreteColleague2(Mediator mediator) {
		super(mediator);
		// TODO Auto-generated constructor stub
	}
	
	public void Send(String message)
	{
		mediator.Send(message, this);
	}
	
	public void Notify(String message)
	{
		System.out.println("同事2得到信息:"+message);
	}
}

写中介者

public abstract class Mediator {

	public abstract void Send(String message,Colleague colleague);
}


public class ConcreteMediator extends Mediator {

	private ConcreteColleague1 colleague1;
	private ConcreteColleague2 colleague2;
	
	@Override
	public void Send(String message, Colleague colleague) {
		// TODO Auto-generated method stub
		if(colleague == colleague1)
		{
			colleague2.Notify(message);
		}
		else
		{
			colleague1.Notify(message);
		}
	}
	public void setColleague1(ConcreteColleague1 colleague1) {
		this.colleague1 = colleague1;
	}
	public void setColleague2(ConcreteColleague2 colleague2) {
		this.colleague2 = colleague2;
	}
	
	
	

}

最后写测试类


public class Program {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ConcreteMediator mediator = new ConcreteMediator();
		
		ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);
		ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);
		
		mediator.setColleague1(colleague1);
		mediator.setColleague2(colleague2);
		
		colleague1.Send("吃过饭了没有?");
		colleague2.Send("没有呢,你打算请客吗?");
	}

}

posted @ 2016-11-12 10:03  yufenghou  阅读(98)  评论(0)    收藏  举报