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/天,具体规则查看活动详情