中介者模式
2019-01-20 本文已影响11人
Stroman
有啥用
就是把各个对象的交互放在一个公共的场所,也可以理解为第三方。就好像是房屋中介和婚姻介绍所。最典型的例子就是MVC。
类图
类图.png结果
买家:大哥,要盘吗?
卖家:滚!
Process finished with exit code 0
使用
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
Market market = new Market();
Solder solder = new Solder(market);
Buyer buyer = new Buyer(market);
market.setBuyer(buyer);
market.setSolder(solder);
solder.sendMessage("大哥,要盘吗?");
buyer.sendMessage("滚!");
}
}
抽象的中介者
package com.company;
public abstract class Mediary {
void sendMessage(String message,Participant participant) {}
}
具体的中介者——市场
package com.company;
public class Market extends Mediary {
private Participant buyer;
private Participant solder;
public void setBuyer(Participant buyer) {
this.buyer = buyer;
}
public void setSolder(Participant solder) {
this.solder = solder;
}
@Override
void sendMessage(String message,Participant participant) {
super.sendMessage(message,participant);
if (participant == buyer) {
System.out.println("卖家:" + message);
} else {
System.out.println("买家:" + message);
}
}
}
通过中介交互的各方
package com.company;
public abstract class Participant {
protected Mediary mediary;
void sendMessage(String message) {}
}
卖方
package com.company;
public class Solder extends Participant {
public Solder(Mediary mediary) {
this.mediary = mediary;
}
@Override
void sendMessage(String message) {
super.sendMessage(message);
this.mediary.sendMessage(message,this);
}
}
买家
package com.company;
public class Buyer extends Participant {
public Buyer(Mediary mediary) {
this.mediary = mediary;
}
@Override
void sendMessage(String message) {
super.sendMessage(message);
this.mediary.sendMessage(message,this);
}
}
多谢捧场
如果您觉得我的文章有价值,那么赏脸打赏一个,鄙人感激不尽。不过,不打赏看看也是好的,如果有不对的地方,还请您多多指正。