Mediator就是一个起到调节作用的类。

假设有A,B,C,D四个类,每个类都于其他三个类有关系。

这样的话,每当有一个类发生变化时,都会关系到其他的三个类,还要进行相应的测试。

当需要增加一个功能相近的类时,需要的改动就更大了。

如果增加一个Mediator类E,作为中间者,所有其他的类只于类E关联,这样的话,每当有一个类变化时,

只需要在类E中进行相应的更改就可以了。当增加一个类时,也只需要于类E进行关联即可。

面向对象的关键是要尽量减少对象之间的关联。通过Mediator模式,就可以达到这个目的。

Mediator模式看似简单,里面却蕴含着面向对象的一个理念-最大限度减少实体关联。

下面通过一个实例来进行进一步的理解

对于求职大家一定都不陌生,而且很多人通过猎头公司找到过工作。

为什么会出现猎头公司呢,实际上猎头公司并不提供工作机会,提供工作机会的是在招聘公司啊。

为什么求职人不直接和公司交涉而通过猎头呢?

1.找到合适人选会分担公司的精力。

2.对于求职者来说找到适合自己的公司不能挨家登门拜访,就算是上网去找也是要花费一定精力的。

3.猎头掌握了双方需要的大量信息。

这样看猎头公司就相当于Mediator的角色,求职者和招聘公司的需求关系通过猎头公司分析后就会十分清晰。

实例程序

GoF设计模式学习笔记 第一回 Mediator相关推荐

  1. 设计模式学习笔记——中介者(Mediator)模式

    设计模式学习笔记--中介者(Mediator)模式 @(设计模式)[设计模式, 中介者模式, Mediator] 设计模式学习笔记中介者Mediator模式 基本介绍 中介者案例 类图 实现代码 Me ...

  2. 设计模式学习笔记--Mediator 中介者模式

    我们知道面向对象应用程序是由一组为了提供某种服务而彼此交互的对象组成.当彼此引用的对象数量比较少时,此时对象之间就为直接交互(点对点).而当对象的数量增加时,这种直接交互会导致对象之间复杂的.混乱的引 ...

  3. 设计模式学习笔记(十七)——Command命令模式

    设计模式学习笔记(十七)--Command命令模式 Command命令模式介绍: Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,"行为请求者"与 ...

  4. 软件设计模式学习笔记(三)

    软件设计模式学习笔记(三) 1. 工厂设计模式 1.1 概述 需求:设计一个咖啡店点餐系统. 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡[AmericanCoffee]和拿铁咖啡[La ...

  5. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

  6. 设计模式学习笔记清单

    设计模式学习笔记清单 关于设计模式许多人已经耳熟能详,这段时间结合李建忠的教学视频以及大量网络资料,把这部分过了一遍,整理出学习笔记,而真正的深入学习和理解只能在具体的开发环境中日积月累.      ...

  7. 步步为营 .NET 设计模式学习笔记系列总结

    设计模式我从开篇到23种设计模式的讲解总共花了进两个月的时间,其间有很多读者给我提出了很好的建议,同时也指出了我的不足,对此我表示感谢,正是由于很多读者的支持我才能坚持的写到最后.在此表示我真诚的谢意 ...

  8. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  9. 设计模式学习笔记——代理(Proxy)模式

    设计模式学习笔记--代理(Proxy)模式 @(设计模式)[设计模式, 代理模式, proxy] 设计模式学习笔记代理Proxy模式 基本介绍 代理案例 类图 实现代码 Printable接口 Pri ...

最新文章

  1. 19道Python练习题
  2. Windows远程连接的用户名和密码怎么设置?
  3. 转载自《读者》--您也吻我一下好吗
  4. 屏幕录像软件Bandicam和oCam
  5. UNIX下DNS服务器之创建篇(下)
  6. 利用EXP/IMP进行数据迁移,如何转换表空间操作(完整版)
  7. R语言绘制差异火山图示例
  8. Android Bottom Sheet详解
  9. ASII码:小写字符比大写字符大32
  10. 在vscode上编写jsp_使用顶级 VSCode 扩展来加快开发 JavaScript
  11. netopeer-manager手册翻译
  12. 智能硬件产品盈利模式
  13. 编写一个程序。要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件“data.txt”中,然后再编写一个程序,从文件“data.txt”中读取这5个学生的成绩,计算并输出他们的平均数,然
  14. vue项目前端实现pdf文件下载
  15. \u202a 神奇的控制字符
  16. 新零售餐饮风口正盛,食云集却在夹缝中求生?
  17. css 友情链接效果,SEO:友情链接是什么?友情链接检查样式方位排版
  18. react+antd+react-to-print实现打印功能,ie浏览器可去掉滚动条
  19. centos安装stress安装失败_Linux系统压力测试软件stress使用
  20. java 字符串格式替换_[Java] - 格式字符串替换方法

热门文章

  1. JSJ—案例谈面向对象
  2. 扫码报修小程序,设备巡检功能
  3. Python基础与大数据应用章末小结(一)
  4. Windows10正确配置java环境
  5. 高速公路智能报警预警系统的应用
  6. IDEA创建ZK框架入门Hello word
  7. python解释器在哪里_详解查看Python解释器路径的两种方式
  8. html载入3d模型,three.js加载三维模型_郭隆邦技术博客
  9. 九天鸟p2p网贷系统的架构设计
  10. C51单片机基础之串口编程实战