暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OOP设计模式Python实现--行为型模式之中介者模式

稻壳编程 2020-02-23
233

作者简介

211工程院校贵州大学管理学院硕士研究生、互联网金融行业资深DevOps研发工程师. 曾在国内多家知名互联网公司 平安科技、微众银行、顺丰科技、魅族任职. 具有多年国内一线互联网公司自动化运维平台设计与开发经验。



OOP设计模式Python实现

行为型模式--中介者模式

前言:

行为型模式是对在不同的对象之间划分责任和算法的抽象化;在系统运行时,对象并不是孤立的而是通过相互通信与协作完成复杂功能的,也就是一个对象在运行时也将影响到其他对象的运行。中介者模式(Mediator Pattern)将一系列的对象交互封装,从而对杂乱无章的为实现多个系统模块之间通信的高耦合、不易维护的代码进行优化;中介者使各对象之间不需显式地相互引用,从而使代码的耦合变得松散且可以独立的改变它们之间的交互。如果不使用中介者模式,各个系统模块或是各个类之间,由于相互依赖,会产生一个复杂的网状结构,应用了中介者模式后,代码结构就变成了结构清晰的星型结构。

 1 

白话中介者模式

某一线城市城中村里有六个房东同时将自家房屋出租,房屋户型各不相同、各有特点适合不同的人居住,并且这六个房东都是同一条村里的土著又恰好是多年的邻居关系相互都有良好的私人关系。此时有租客A来租房,看了房东1的房子后表示不满意,于是房东1将租客A介绍个他的其他五个朋友,这样似乎是没有什么问题的但若东2的房子不出租了或者是已经出租出去了,就是情况发生了变化,此时房东2就需要将变化通知给其他的五个朋友,告诉他们不用再给他介绍租客了。这就出现了中间一个人状态发生了变化,就要改动其他五个人。解决这种情况呢?通过引入房产中介,六个房东都把自己的房屋交中介打理,租客A通过中介找房, 若看房间1不满意时则可继续看房间2,当房间2被租出去后,中介也只需要通知房间2的房东房子的状态即可,下次还有人来看房时,就不会继续给他推荐房间2了。所以此时一处状态发生了变化也就影响改变了一处, 并不会影响另外5处,这就是中介者模式的例子。 通过下面两幅图我们可以更清楚的看到中介者模式带来的好处:

图1.六个房东没有引入中介而是通过私人关系相互介绍房客时的关系结构如下:


图2. 六个房东引入中介打理各自房产时的关系结构图如下:


中介者模式代码由以下几种角色构成:

  • Mediator(抽象中介者):定义了一个用于与各同事对象之间进行通信的抽象接口

  • ConcreteMediator(具体中介者):抽象中介者的子类,通过协调各个同事对象实现协作行为并维持了对各个同事对象的引用

  • Colleague(抽象同事类):定义了同事类公有的方法,声明了一些抽象方法供子类实现

  • ConcreteColleague(具体同事类):抽象同事类的子类,实现了在抽象同事类中声明的抽象方法

 2 

示例代码

输出:

 3 

结束语

如果本文可以对您的工作学习带来帮助,请扫描左侧赞赏码以资鼓励作者;文章勘误请扫描右侧二维码联系作者。

文章转载自稻壳编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论