首页 > 其他 > 详细

中介者模式

时间:2015-10-10 15:15:23      阅读:270      评论:0      收藏:0      [点我收藏+]
public static  abstract class Mediator{
		
		
		protected Colleague1 colleague1;
		protected Colleague2 colleague2;
		
		
		
		public Colleague1 getColleague1() {
			return colleague1;
		}



		public void setColleague1(Colleague1 colleague1) {
			this.colleague1 = colleague1;
		}



		public Colleague2 getColleague2() {
			return colleague2;
		}



		public void setColleague2(Colleague2 colleague2) {
			this.colleague2 = colleague2;
		}
		
		public abstract void doSomething();
	}
	
	public static class ConcrectMediator extends Mediator{

		@Override
		public void doSomething() {
			//中介者中一般只调用自己的方法
			colleague1.doSomethingSelf();
			
			colleague2.doSomethingSelf();
			
		}
		
	}
	
	public static  abstract class Colleague{
		protected Mediator mediator;

		public Colleague(Mediator mediator){
			this.mediator = mediator;
		}
	}
	
	public static  class Colleague1 extends Colleague{

		public Colleague1(Mediator mediator) {
			super(mediator);
		}
		
		public void doSomethingSelf(){
			System.out.println("c1 doSomethingSelf");
		}
		
		public void doSomethingMedia(){
			this.mediator.doSomething();
		}
		
	}
	
	public static class Colleague2 extends Colleague{

		public Colleague2(Mediator mediator) {
			super(mediator);
		}
		
		public void doSomethingSelf(){
			System.out.println("c2 doSomethingSelf");
		}
		
		public void doSomethingMedia(){
			this.mediator.doSomething();
		}
		
	}
	
	public static void main(String[] args){
		ConcrectMediator mediator = new ConcrectMediator();
		Colleague1 c1 = new Colleague1(mediator);
		Colleague2 c2 = new Colleague2(mediator);
		
		mediator.setColleague1(c1);
		mediator.setColleague2(c2);
		
		c1.doSomethingSelf();
		c1.doSomethingMedia();
		
		c2.doSomethingSelf();
		c2.doSomethingMedia();
		
	}

 优点:

减少类的依赖,把一对多的依赖变成一对一,降低了类的耦合。

缺点:

中介者会很复杂。

使用场景:

看多个对象的耦合程度:在类图中出现了蜘蛛网的结构,考虑使用中介者模式来优化类图。

中介者模式

原文:http://www.cnblogs.com/wangqian-easy/p/4866809.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!