设计模式java——中介者模式

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

中介者模式Demo:

/**
 * 2018年4月8日下午11:30:55
 */
package com.Designpattern;

/**
 * @author xinwenfeng
 *
 */
public class TestMediator {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		HouseMediator houseMediator = new HouseMediator();
		BuyHousePeople buy_people = new BuyHousePeople(houseMediator);//设置中介者
		SellHousePeople sell_people = new SellHousePeople(houseMediator);
		houseMediator.setBuy(buy_people);
		houseMediator.setSell(sell_people);
		
		buy_people.send("我要买那套房");
		sell_people.send("ok");
	}

}
//抽象中介者
interface MyMediator{
	public void sendMessage(String message,String from);
}
//抽象消息收发者
abstract class MyPeople{
	protected MyMediator mediator;//只知道中介者
	public MyPeople(MyMediator mediator) {
		this.mediator = mediator;
	}
}
class BuyHousePeople extends MyPeople{

	public BuyHousePeople(MyMediator mediator) {
		super(mediator);
	}
	
	public void send(String message) {
		System.out.println("买人的人说:"+message);
		mediator.sendMessage(message,"BUY");
	}
	
	public void receive(String message) {
		System.out.println("买人的人收到消息:"+message);
	}
}
class SellHousePeople extends MyPeople{

	public SellHousePeople(MyMediator mediator) {
		super(mediator);
	}
	
	public void send(String message) {
		System.out.println("出售的人说:"+message);
		mediator.sendMessage(message,"SELL");
	}
	
	public void receive(String message) {
		System.out.println("出售的人收到消息:"+message);
	}
}
class HouseMediator implements MyMediator{

	private BuyHousePeople buy;//持有每个对象
	private SellHousePeople sell;
	
	public void setBuy(BuyHousePeople buy) {
		this.buy = buy;
	}

	public void setSell(SellHousePeople sell) {
		this.sell = sell;
	}
	
	@Override
	public void sendMessage(String message,String from) {//中转消息
		switch(from) {
		case "BUY":
			if(null != sell) {
				sell.receive(message);
			}
			break;
		case "SELL":
			if(null != buy) {
				buy.receive(message);
			}
			break;
		}
	}

}

结果:


猜你喜欢

转载自blog.csdn.net/flylikebutterfly/article/details/79860083
今日推荐