`
TRAMP_ZZY
  • 浏览: 132020 次
社区版块
存档分类
最新评论

设计模式-中介者模式

阅读更多
在多个对象依赖的情况下,通过加入终结者角色,取消了多个对象的关联或依赖关系,减少了对象的耦合性。
	
	Define an object that encapsulates how a set of objects interact. Mediator promotes loose
	coupling by keeping objects from referring to each other explicitly, and it lets you vary
	their interaction independently.
	用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,
	而且可以独立地改变它们之间的交互。
	
	中介者模式的组成:
	(1)Mediator 抽象中介者角色
		抽象中介者角色定义统一的接口,用于各同事角色之间的通信。
	(2)Concrete Mediator 具体中介者角色
		具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。
	(3)Colleague 同事角色。
		每一个同事角色都知道中介者角色,而且与其他同事角色通信的时候,一定要通过中介者角色协作。
		每个同事类的行为分为两种:一种是同事本身的行为,比如改变对象本身的状态,处理自己的行为等,
		这种方法叫做自发行为(Self-Method),与其他的同事类或中介者没有任何的依赖;第二种是必须依赖
		中介者才能完成的行为,叫做依赖方法(Dep-Method)。
		
	public abstract class Mediator {
	
		protected ConcreteColleague1 c1;
		protected ConcreteColleague2 c2;
		
		public ConcreteColleague1 getC1() {
			return c1;
		}
		
		public void setC1(ConcreteColleague1 c1) {
			this.c1 = c1;
		}
		
		public ConcreteColleague2 getC2() {
			return c2;
		}
		
		public void setC2(ConcreteColleague2 c2) {
			this.c2 = c2;
		}
		
		public abstract void doSomethings1();
		public abstract void doSomethings2();

	}
	
	public class ConcreteMediator extends Mediator {

		@Override
		public void doSomethings1() {
		}

		@Override
		public void doSomethings2() {
		}

	}
	
	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);
		}
		
		public void selfMethod1() {
			
		}
		
		public void depMethod1() {
			super.mediator.doSomethings1();
		}

	}
	
	public class ConcreteColleague2 extends Colleague {

		public ConcreteColleague2(Mediator mediator) {
			super(mediator);
		}

		public void selfMethod2() {
			
		}
		
		public void depMethods() {
			super.mediator.doSomethings2();
		}
	}

	中介者模式的应用场景
	中介者模式简单,但是简单不代表容易使用,很容易被误用。在面向对象编程中,对象和对象之间必然会
	有依赖关系,如果某个类和其他类没有任何相互依赖的关系,那这个类就是一个“孤岛”,在项目中就没有
	存在的必要了。
	中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出现了蜘蛛网状的结构。
	在这中情况下一定考虑使用中介者模式,这有利于把蜘蛛网树立为星型结构。 
	
	中介者模式的实际应用
	中介者模式也叫做调停者模式。一个对象要和N多个对象交流,就像对象间的战争,很混乱。这时,需要加
	入一个中心,所有的类都和中心交流。中心说怎么处理就怎么处理。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics