常说的设计模式是23种设计模式,分为3大类:

  • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
  • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
  • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

上次咱们说了“访问者模式”,今天咱们来说最后一个模式“中介者模式”。

“中介者模式”关键在于中介的行为。

中介者的行为的作用,是掌控所有已注册对象的功能和配置。

中介的抽象类

“colleagueChanged”方法就是功能对象的选择执行方法

功能对象的抽象类

“mediator”需要使用的中介对象

“action”抽象方法执行功能的必须方法

“change”方法,是中介对象对象当前功能对象的调配调用方法

中介者实现类

“colleague1,colleague2”注册已有的功能对象,这里设置的有一些直接,可以换成集合。

“colleagueChanged”方法,对功能对象调配调用的方法

“createConcreteMediator”方法是简易的注册方法

“getColleague1”方法是获取功能对象1的方法

“getColleague2”方法是获取功能对象2的方法

功能对象1的实现

功能对象2的实现

最后应用

“中介者模式”用来降低功能对象之间的联系,也称之为“解耦”的过程。

这次我们用一个场景来解释中介者模式。

《西游记》中唐三藏去完成取经任务。在路上收了三个徒弟“孙悟空”、“猪悟能”、“沙悟净”和一匹白龙马“小白龙”。

每当唐三藏被妖怪抓走后,几个徒弟的固定行为是:

  1. 沙悟净高喊“大师兄、二师兄师傅被妖怪抓走了”。
  2. 孙悟空驾着筋斗云去大妖怪。
  3. 猪悟能去分行李。
  4. 白龙马保护行李。

不难看出,唐三藏被妖怪抓走这一行为触发了徒弟们的各种行为。而沙悟净的行为触发了孙悟空和猪悟能的行为,而猪悟能触发了白龙马的行为。在这种错综复杂的关联中,很难理清关系。

现在我们用中介者模式类处理这些联系。

中介者中的行为一旦接收到唐三藏被妖怪抓走,就去触发徒弟们的各种行为,这样,所有的关联,都在中介者行为中,各个徒弟的行为这间联系降到最低。这种做法,就是“中介者模式”的优势了。

中介者抽象类

中介者实现类

功能抽象类

唐三藏

沙悟净

孙悟空

猪悟能

小白龙

最终实现功能:

24设计模式—中介者模式(九耶-钛伦特)相关推荐

  1. Excel快捷键汇总(九耶-钛伦特)

    Excel快捷键汇总 2)Shift+F11 插入新工作表< 3)Alt+Shift+F1 插入新工作表< 4)Ctrl+PageDown 移动到工作簿中的下一张工作表← 5)Ctrl+P ...

  2. Excel快捷键大全(四)(九耶-钛伦特)

    Excel快捷键大全(四) Ctrl+Shift+)取消选定区域内的所有隐藏列的隐藏状态< Ctrl+Shift+& 对选定单元格应用外边框← Ctrl+Shift+_取消选定单元格的外 ...

  3. Python设计模式-中介者模式

    Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...

  4. 7. 星际争霸之php设计模式--中介者模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  5. 【设计模式】Java设计模式 - 中介者模式

    Java设计模式 - 中介者模式

  6. 设计模式中介者模式-备忘录模式-状态模式

    设计模式 中介者模式 基本介绍 中介者模式使用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式属于行为模式,使 ...

  7. 设计模式-中介者模式(Mediator Pattern)

    设计模式-中介者模式(Mediator Pattern) 文章目录 设计模式-中介者模式(Mediator Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.总 ...

  8. 大话设计模式—中介者模式

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

  9. [设计模式]中介者模式之Events消息传递实现

    这篇文章比较短,修改自 写给大家看的设计模式之中介者中的例子 中介者模式的定义和目的自不必说, 参考上文即可. 本文针对实现方式做一个补充. 中介者模式增加了一个第三方对象(中介者)来控制两个对象(同 ...

最新文章

  1. linux管理员工具
  2. linux qt libusb,Ubuntu15下Qt+libusb开发
  3. Pytorch gpu加速方法
  4. Linux常用性能分析工具汇总
  5. NLP预训练模型学习全攻略(内附前沿论文解读直播)
  6. ITK:扩张灰度图像
  7. Qt Creator添加编译器
  8. 函数计算帮助石墨文档突破性能瓶颈,有效节省服务器成本
  9. 【原】ASP.Net 项目实做 搭建开发环境
  10. 一文搞懂如何使用Node.js进行TCP网络通信
  11. “这辈子不可能打工男子”出狱了,司法所将重点关注,网友:《今瓶没》今日上映!...
  12. nginx上传目录配置,禁止执行权限
  13. SQL Server 2008 数据库快照
  14. SQL Server 2012完全备份、差异备份、事务日志备份和还原操作
  15. python结构_科学网—Python与结构分析(1)---反应谱 - 潘超的博文
  16. Adobe Flash Player已不再受支持 解决方案
  17. python中的iter函数_如何使用python中iter函数?
  18. 微信领取淘宝内部优惠券教程免费
  19. cadence SPB17.4 - Active Class and Subclass
  20. 淘宝直通车托管公司怎么样

热门文章

  1. 基于SpringBoot家庭理财系统(Java项目)
  2. 儿童文学超级IP《绽龙家族》:推动“互动教育”和“文化消费升级”
  3. 一个LINUX狂人的语录[转]
  4. AERONET AOD 数据自动化下载 + PYTHON + SELENIUM
  5. python读取ini_python读取ini文件
  6. 运营商数据:苹果用户流失 华为魅族势头强劲
  7. UIWebView加载HTTPS
  8. python前端开发招聘_Python招聘需求与技能体系
  9. ISBN-10和ISBN-13有什么区别?
  10. 计算机删除数据后如何恢复出厂设置,怎样使电脑恢复到出厂状态,清除所有数据??是否需要重装系统??...