java 23种设计模式之行为型模式—中介者模式(22)

java 23种设计模式之行为型模式—中介者模式(22)


中介者模式,根据这个名字的意思我们大概知道起意

就是由中介者来完成相关事务,处于中介者两端的可以不必相互联系。

比如我们的电脑

里面的内存和硬盘,他们不是直接相联系的,而是用线连接到主板,由主板和内存通信

这里的主板就是中介

本例以中介出租房屋为例

有房东出租房屋,就告诉中介可以通知房客来租房了

房客要租房,首先应该询问中介是否有房,没有得到通知,表示没有房

本里默认情况下,是房东有房可租,房客需要租房

房东类

public class Landlord {
	private Mediator md;
	
	//表示有房子出租
	private boolean house = true;
	
	public  Landlord(Mediator md){
		this.md = md;
	}

	public boolean isHouse() {
		return house;
	}

	public void setHouse(boolean house) {
		this.house = house;
	}
	
	
}
房东只和中介交互


房客类

//租客
public class Tenant {
	private Mediator md;
	
	//为true表示中介通知我有房子出租
	private boolean house = true;
	public  Tenant(Mediator md){
		this.md = md;
	}
	public boolean isHouse() {
		return house;
	}
	public void setHouse(boolean house) {
		this.house = house;
	}
	
	
}
房客也只和中介交互


中介类

本例没有使用接口,因本例无需扩展

public class Mediator {
	private Tenant t;
	private Landlord l;
	
	public void regTenant(Tenant t){
		this.t = t;
	}
	public void regLandlord(Landlord l){
		this.l = l;
	}
	
	//访客要租房子
	public void speakTenant(){
		//先看看收到中介的消息是什么
		if(t.isHouse()){
			//收到的消息是有房子,去租
			System.out.println("有房子出租出租");
		}else{
			//收到的消息是没有房子
			System.out.println("没有房子可以出租出租");
		}
	}
	
	//代替房东说话,是否有房子
	public void speakLandlord(boolean house){
		//房东告诉中介,我现在是否有房子可以出租,中介帮房东传话给访客
		
		//房东告诉房客
		if(house){
			System.out.println("有房子可以租租了");
		}else{
			System.out.println("还没有房子租租");
		}
		t.setHouse(house);
	}
}

客户端类

public class Client {

	public static void main(String[] args) {
		
		//获得中介 房客 和房东
		Mediator med = new Mediator();
		Tenant t = new Tenant(med);
		Landlord l =new Landlord(med);
		
		//将房东和房客再中介那里注册
		med.regTenant(t);
		med.regLandlord(l);
		
		/*
		 * 中介得到房东的消息:没有房子出租
		 * 房客告诉中介要租房子,显然租不了
		 */
		med.speakLandlord(false);
		med.speakTenant();
		/*
		 * 中介得到房东的消息:有房子出租
		 * 房客告诉中介要租房子,显然可以租了
		 */
		med.speakLandlord(true);
		med.speakTenant();
		
	}

}



爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img