中介者模式用来封装一组对象的交互。以此让这些对象从本来的 紧密耦合到松耦合,让这些对象可以各自独立变化。

在一个GUI应用中, WinForm ,WebForm,ViewController都是一种Mediator,让内部的控件的事件处理和控件访问都在一起。实际上,每个Form都会有很多buttons, text ,list boxe等等。如果它们之间直接发消息的话,大家都像是蜘蛛网一样的耦合在一起。实际上,大家都是通过Form来完成通讯的。

比如一个应用有一个数字显示和一个按钮,当点击按钮时,设置数字加一。

1 + -

那么,耦合起来的方案是这样的(伪代码):

class Button1 {constructor(text){this.textbox = textbox}click(){this.textbox.value += 1}
}
class Form1 {}
class Textbox1 {
}
复制代码

真实的做法一般是这样的(伪代码):

class Button1 {
}
class Form1 {constructor(){this.textbox = new Textbox1()this.button = new Button()this.button.click = this.click}click(){this.textbox.value +=1}
}
class Textbox1 {
}
复制代码

当各种控件增加,越来越多时,后一种中介者模式就体现出很大的好处来。至少,其中的各种控件直接即使需要消息通讯,也不必比如引用,而只要和中介者Form1耦合即可。

Design Patterns - Mediator Pattern相关推荐

  1. 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录

    唉   时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的,搞 ...

  2. 设计模式(Design Patterns)详解

    设计模式(Design Patterns) --可复用面向对象软件的基础一般会用到的: Factory( 工厂模式) Singleton(单例模式) 这两个比较多 Proxy(代理模式) Adapte ...

  3. Java23中设计模式(Design Patterns)详解

    2019独角兽企业重金招聘Python工程师标准>>> 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复 ...

  4. [笔记一]Essential JavaScript Design Patterns For Beginners

    最近在看Essential JavaScript Design Patterns For Beginners 原文地址:http://www.addyosmani.com/resources/esse ...

  5. 架构设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)学习笔记

    前言   时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的, ...

  6. Head First Design Patterns(深入浅出设计模式)-目录

    目录 序 你的大脑是如何理解设计模式的?此时,你正在设法学习些知识,而你的大脑要通过确认这些知识来给你提供支持.你的大脑在想:"最好出去做些更重要的事情,就象消灭野兽或者光着身子滑雪不是个好 ...

  7. 设计模式 - Design Patterns

    一. 什么是设计模式? 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 设计模式对于面向对象编程语言的开发者来说是必备知识,但对于开发者来说设 ...

  8. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)

    [索引页] [源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互 ...

  9. 艾伟_转载:C# Design Patterns (3) - Decorator

    Decorator Pattern (装饰模式) 装饰模式可「动态」地给一个对象添加一些额外的职责,提供有别于「继承」的另一种选择.就扩展功能而言,Decorator Pattern 透过 Aggre ...

最新文章

  1. HLS-Demo IOS 视屏直播样例
  2. 《算法导论》读书笔记(七)
  3. SRP:The Single-Responsibility Principle
  4. Apk去签名校验详解
  5. elk的一些零碎知识
  6. bzoj2007: [Noi2010]海拔
  7. Java 在指定目录下查找文件
  8. delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节)
  9. Bandit UCB推导
  10. 物料移动类型和后勤自动科目设置-SAP屠夫
  11. 3月3日 单灭点、双灭点、单应矩阵求解相机姿态,世界坐标-相机坐标-图像坐标-像素坐标四个坐标系的变换关系,通过Vanishing Points计算焦距和像心
  12. 浅谈Cglib、Jdk以及ProxyFactory实现动态代理上的区别
  13. 永中office java_永中office怎么样?使用过的说一下感受如何?
  14. CentOS6 双线双ip服务器路由设置方法
  15. linux去掉文件中数值符号,去掉linux文本文件中的 ^M 符号
  16. 达梦数据库迁移数据报错 字符串截断
  17. 国家统计局固定资产投资统计
  18. 22.10.17 CF-1744D Divisibility by 2^n
  19. 一个破解共存版微信个破解共存版微信
  20. 计算机毕设Node.js+Vue兴澜幼儿园管理系统(程序+LW+部署)

热门文章

  1. 加速度和陀螺仪 日常活动识别 跌倒检测_巢湖房屋安全检测,幼儿园房屋质量检测新趋势-房屋鉴定专业团队...
  2. 20220202--CTF刷题MISC方向--第8题--十六进制转化成ASCII
  3. python转嵌入式c_在C嵌入式python中刷新导入
  4. nlm算法matlab代码_遗传算法GA的MATLAB代码
  5. mvn 本地jar包 加入自己的maven仓库
  6. day21-python模块
  7. javax.xml.bind.UnmarshalException: 意外的元素 (uri:, local:xml)。所需元素为(none)
  8. 浏览器的一个请求从发送到返回都经历了什么?
  9. DEDE文章列表加上序号效果
  10. Asp.net 2.0 动态加载其他子目录用户控件问题