模式介绍
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
使用场景
1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。
2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。
系统实现
/**
* 交易者抽象类
*/
public abstract class Participant {
protected Mediary mediary;
void sendMessage(String message) {}
}
/**
* 卖方
*/
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);
}
}
/**
* 买方
*/
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);
}
}
/**
* 中介者抽象类
*/
public abstract class Mediary {
void sendMessage(String message,Participant participant) {}
}
/**
* 中介者类
*/
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);
}
}
}
/**
* 客户端
*/
public class Client{
public static void main(String[] args) {
Market market = new Market();
Solder solder = new Solder(market);
Buyer buyer = new Buyer(market);
market.setBuyer(buyer);
market.setSolder(solder);
solder.sendMessage("大哥,要盘吗?");
buyer.sendMessage("滚!");
}
}
结果:
买家:大哥,要盘吗?
卖家:滚!