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

本文介绍了中介者模式的概念及其应用场景,并通过买卖房屋的例子详细展示了如何使用该模式降低对象间的耦合度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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, "买家发送的信息");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值