java设计模式十八(中介者模式)

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, "买家发送的信息");
    }
}

猜你喜欢

转载自blog.csdn.net/xiaolicd/article/details/81380757
今日推荐