中介者模式

本文通过双十一网购场景解释中介者模式,描述其降低对象间耦合的作用。以淘宝平台作为中介,处理买家与卖家的交易,展示了中介者如何协调双方交互。代码示例中,`TaoBao`作为中介者,协调`Saler`(卖家)和`Shopper`(买家)的交易行为。

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

一.小结

  • 定义:通过引入一个中介者来处理各个对象之间的通信,降低各个对象间的相互作用与耦合。

  • 特点:降低类之间的耦合、将一对多软化为一对一关系;有些情景下中介者会很膨大很复杂。

  • 通用UML类图如下:
    中介者模式

  • 常见形式:MVC/MVP架构、三层架构等;生活中租房中介、留学中介、网购等。

二.例子

  最近刚好双十一时期,剁手狂潮哈哈。这里以网购为例,我们通过淘宝京东购买物品,淘宝京东平台充当一个中介,承担着买家与卖家的交易。代码Demo如下

//1.封装各个同事角色之间的依赖行为
public interface IDeal {
    // 买卖交易
    void shopDeal();
}

// 2.买家和卖家两个同事角色,各自具有自己的自发行为,同时也有相互的依赖行为
public class Saler implements IDeal {

    // 自发行为,与买家无关
    public void discount() {
        System.out.println("趁着双十一来波促销");
    }

    // 依赖行为,与买家有关
    @Override
    public void shopDeal() {
        System.out.println("卖出台MAC,销售额+2w元");
    }

    // 自发行为,与买家无关
    public void total() {
        System.out.println("今年双十一下单10w,销售额为2000w元,赚发了!");
    }
}
public class Shopper implements IDeal {

    public Shopper() {

    }

    // 自发行为,与卖家无关
    public void think() {
        System.out.println("双十一了啊...对自己好点吧!");
    }
    // 依赖行为,与卖家有关
    @Override
    public void shopDeal() {
        System.out.println("买台MAC,存款-2w元");
    }
    // 自发行为,与卖家无关
    public void after() {
        System.out.println("又要吃土了呜呜呜~");
    }
}

// 3.中介者处理同事角色间的依赖行为
public class TaoBao {

    public void shopDeal(Shopper shopper, Saler saler) {
        shopper.shopDeal();
        saler.shopDeal();
    }
}

// 4.情景类
public class Client {

    public static void main(String[] args) {
        // -----购买前纠结
        Saler saler = new Saler();
        saler.discount();
        Shopper shopper = new Shopper();
        shopper.think();

        // -----剁手一直爽
        TaoBao taoBao = new TaoBao();
        taoBao.shopDeal(shopper, saler);
        
        // -----钱包火葬场
        shopper.after();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值