首页 > 代码库 > [设计模式-行为型]中介者模式(Mediator)

[设计模式-行为型]中介者模式(Mediator)

一句话

又翻译成调停者模式。

就是类似房产中介, 买房、卖方不需要双方直接交涉,交给中介。


概括


技术分享

解析

MEDIATOR—四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。
  调停者模式:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。


实例

举一个房产交易的例子,现在二手房市场上超过5年的房子进行交易就不需要缴纳房产税了。

包含的类文件:

一个中介的接口 (Mediator.java)

一个中介的实现类:(MediatorImpl.java)

一个房主的接口 (HouseOwner.java)

两类房主的类 (HouseOwnerA.java, HouseOwnerB.java)

测试主类: (TestMain.java)


/**   
 * @author oscar999   
 * @date 2015-1-6
 * @version V1.0   
 */
package designptn.mediator;

public abstract class Mediator {
	public abstract void sellHouse(String houseType);
}

/**   
 * @author oscar999   
 * @date 2015-1-6
 * @version V1.0   
 */
package designptn.mediator;

/**
 * @author Administrator
 *
 */
public class MediatorImpl extends Mediator {

	private HouseOwnerA ha;
	private HouseOwnerB hb;
	
	public MediatorImpl(){
		ha = new HouseOwnerA();
		hb = new HouseOwnerB();
	}
	
	@Override
	public void sellHouse(String houseType) {
		// TODO Auto-generated method stub
		if(houseType.equals("typeA"))
		{
			ha.sell();
		}else if(houseType.equals("typeB")){
			hb.sell();
		}
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-6
 * @version V1.0   
 */
package designptn.mediator;

/**
 * @author Administrator
 * 
 */
public abstract class HouseOwner {
	public abstract void sell() ;

}

/**   
 * @author oscar999   
 * @date 2015-1-6
 * @version V1.0   
 */
package designptn.mediator;

/**
 * @author Administrator
 * 
 */
public class HouseOwnerA extends HouseOwner {

	@Override
	public void sell() {
		// TODO Auto-generated method stub
		System.out.println("Sell house with Tax");
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-6
 * @version V1.0   
 */
package designptn.mediator;

/**
 * @author Administrator
 *
 */
public class HouseOwnerB extends HouseOwner {

	@Override
	public void sell() {
		// TODO Auto-generated method stub
		System.out.println("Sell house without Tax");
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-6
 * @version V1.0   
 */
package designptn.mediator;

/**
 * @author Administrator
 *
 */
public class TestMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Mediator mediator = new MediatorImpl();
		mediator.sellHouse("typeA");
		mediator.sellHouse("typeB");
		
	}

}




[设计模式-行为型]中介者模式(Mediator)