[设计模式-行为型]中介者模式(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");
		
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值