java设计模式—中介者模式
一.概述
中介者模式是指将多个对象之间的相互通信,转化为由中介者接收信息并将信息转发给对应的对象,以达到降低耦合的目的。
二.应用场景
1.MVC框架
2.微服务的注册中心就是中介者模式
3.QQ群或者聊天室
三.模式示例:
我们买房时,通常会找房产中介,以此为例来具体实现中介者模式,代码如下:
1.创建中介抽象类
public abstract class Mediator {
protected Consumer buyer;
protected Consumer seller;
public Mediator(Consumer buyer, Consumer seller){
this.buyer = buyer;
this.seller = seller;
}
public abstract void sendMsgToBuyer(String message);
public abstract void sendMsgToSeller(String message);
}
2.创建买家和卖家(都是消费者)抽象类
public abstract class Consumer {
protected Mediator mediator;
public abstract void sendMessage(Mediator mediator, String message);
public abstract void getMessage(String message);
}
3.创建创建中介者具体类
public class HouseMediator extends Mediator{
public HouseMediator(Consumer buyer, Consumer seller) {
super(buyer, seller);
}
@Override
public void sendMsgToBuyer(String message) {
seller.getMessage(message);
}
@Override
public void sendMsgToSeller(String message) {
buyer.getMessage(message);
}
}
4.创建买家具体类
public class Buyer extends Consumer{
public void sendMessage(Mediator mediator, String message) {
mediator.sendMsgToBuyer(message);
}
public void getMessage(String message) {
System.out.println("买家收到消息:" + message);
}
}
5.创建卖家具体类
public class Seller extends Consumer{
public void sendMessage(Mediator mediator, String message) {
mediator.sendMsgToSeller(message);
}
public void getMessage(String message) {
System.out.println("卖家收到消息:" + message);
}
}
6.模式调用
public class Test {
public static void main(String[] args) {
Seller seller = new Seller();
Buyer buyer = new Buyer();
HouseMediator mediator = new HouseMediator(buyer, seller);
seller.sendMessage(mediator, "卖家发送的信息");
buyer.sendMessage(mediator, "买家发送的信息");
}
}