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