十六、设计模式之中介者模式【Mediator 】

在这里插入图片描述

十六、设计模式之中介者模式【Mediator 】

所属类型定义
行为型用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护

能帮我们干什么?

主要解决什么问题?

主要解决的是 对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理

**何时使用:**多个类相互耦合,形成了网状结构。
在这里插入图片描述

**如何解决:**将上述网状结构分离为星型结构。
在这里插入图片描述

优缺点

优点

1、降低了类的复杂度,将一对多转化成了一对一。

2、各个类之间的解耦。

3、符合迪米特原则。

缺点:

中介者会庞大,变得复杂难以维护。


使用的场景

1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。

2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

**注意事项:**不应当在职责混乱的时候使用。

角色

1、中介者

**关键代码:**在抽象类里有一个 ArrayList 存放观察者们。

观察模式

难度: ⭐️

样例代码

java/com/kongxiang/raindrop/dp/type/behavior/mediator · master · 无难事者若执 / 23种设计模式 · GitCode

描述:

就和我们现实中的中介一样。

房产局,银行,买房人,卖方人,国土局。如果让买房人自己跑。一会要去银行验资,一会要去房产局。很多细节。

加入一个中介者。买房人只会去中介。中介去联系其他。有事没事找中介。中介业务就很多很杂。导致中介本身的复杂度。

但也保证了对象间协作的松耦合。易于代码维护。

   public static void main(String[] args) throws Exception {
        HomeRegister homeRegister = new HomeRegister();
        Mediator m = new Mediator(homeRegister);
        Bank bank = new Bank();
        m.setBank(bank);

        String homerName = "lisi";
        Home home = new Home(homerName,100000);
        homeRegister.register(homerName,home);
        Homer homer = new Homer(homerName,home);
        // 申请卖房
        m.registerHomer(homer);

        // 买房流程
        String buyerName = "zhangsan";

        Buyer buyer = new Buyer(buyerName,2000);
        System.out.println("买家买了房子 :买家" + buyer.name + " 房子"+ buyer.home +" 余额"+buyer.money);
        System.out.println("卖家卖了房子 :卖家" + homer.name + " 房子"+ homer.home +" 余额"+homer.money);
        System.out.println("买房前");
        buyer.buyHome(m);

        System.out.println("买家买了房子 :买家" + buyer.name + " 房子"+ buyer.home +" 余额"+buyer.money);
        System.out.println("卖家卖了房子 :卖家" + homer.name + " 房子"+ homer.home +" 余额"+homer.money);


    }


买家买房

 public void buyHome(Mediator mediator) throws Exception {
        Homer homer = mediator.findHomer();
        mediator.checkCredit(this);
        mediator.checkMoney(this.money, homer.home.price);
        mediator.deal(this, homer);
    }

总结

中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘉羽很烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值