中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,中介者模式又称为调停者模式。

模式角色与结构:

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace CSharp.DesignPattern.MediatorPattern
{class Program{static void Main(string[] args){}}// 抽象中介者abstract class Mediator{protected List<Colleague> colleagues; // 用于存储同事对象public void Register(Colleague colleague){colleagues.Add(colleague);}public abstract void Operation();}class ConcreteMediator : Mediator{public override void Operation(){// ...((Colleague)colleagues[0]).ToString(); // 通过中介者调用同事类的方法// ...
        }}// 抽象同事类abstract class Colleague{protected Mediator mediator; // 维持一个抽象中介者的引用public Colleague(Mediator mediator){this.mediator = mediator;}public abstract void Method1(); // 声明自身方法,处理自己的行为,共中介者调用// 定义依赖方法,与中介者进行通信public void Method2(){mediator.Operation();}}class ConcreteColleague : Colleague{public ConcreteColleague(Mediator mediator): base(mediator){ }public override void Method1(){// ...
        }}
}

转载于:https://www.cnblogs.com/thlzhf/p/3993769.html

CSharp设计模式读书笔记(18):中介者模式(学习难度:★★★☆☆,使用频率:★★☆☆☆)...相关推荐

  1. 《JavaScript设计模式与开发实践》读书笔记之中介者模式

    1. 中介者模式 中介者模式的作用就是用来解除对象与对象之间的紧耦合关系,增加中介者后,所有相关对象都通过中介者来通信,而不再相互引用 1.1中介者模式的例子 以泡泡堂游戏为例,先定义一个玩家构造函数 ...

  2. CSharp设计模式读书笔记(22):策略模式(学习难度:★☆☆☆☆,使用频率:★★★★☆)...

    策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy). 模式角色与结构: ...

  3. CSharp设计模式读书笔记(3):抽象工厂模式(学习难度:★★★★☆,使用频率:★★★★★)...

    抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类.抽象工厂模式又称为Kit模式. 模式角色和结构图: 抽象工厂是指一 ...

  4. CSharp设计模式读书笔记(10):装饰模式(学习难度:★★★☆☆,使用频率:★★★☆☆)...

    装饰模式(Decorator Pattern): 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活. 模式角色与结构: 示例代码: using System; u ...

  5. 大话设计模式读书笔记11----建造者模式(Builder)

    建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的建造过程可以创建不同的表示. 1.Builder是什么? 是创建一个Product对象的各个部件指定的抽象接口. 2.Con ...

  6. 《Head First设计模式》 读书笔记16 其余的模式(二) 蝇量 解释器 中介者

    <Head First设计模式> 读书笔记16 其余的模式(二) 蝇量 解释器 中介者 蝇量(Flyweight Pattern) 如想让某个类的一个实例能用来提供许多"虚拟实例 ...

  7. 设计模式读书笔记-----工厂方法模式

    一.问题 在前一章<设计模式读书笔记-----简单工厂模式>中通过披萨的实例介绍了简单工厂模式.在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨.如 ...

  8. 走穿java23种设计模式--18中介者模式详解

    走穿java23种设计模式–18中介者模式详解 中介者模式也称调停者模式,是一种比较简单的模式. 一.中介者模式的现实场景 蔡良因为上次表白时对方只看重他的物质方面,所以他对女朋友这个问题有点失望.因 ...

  9. 大话设计模式读书笔记

    主题 概要 设计模式 大话设计模式读书笔记 编辑 时间 新建 20170423 序号 参考资料 1 大话设计模式 重新看了一遍设计模式,除了一些已经特别熟悉的模式,都自己敲了一遍代码,有些豁然开朗的感 ...

最新文章

  1. mysql常用命令汇总
  2. win7下显示linux文本文件不换行
  3. 2周修改了1000多个Bug后软件项目扭转了局面,未交付银行的现金管理系统健壮起来了...
  4. 看固态存储厂商在硝烟四起的市场中如何发展?
  5. android tag定义快捷键,Android Studio快捷键生成TAG、Log.x日志输出介绍
  6. android+完美的列表,android完美讲义.pdf
  7. K均值聚类关于初始聚类中心选取的一种改进(python程序)
  8. 未定义标识符 stringc/c++(20)_天津港20款丰田塞纳四驱顶配现车价格优惠
  9. 基于任务分析的非递归遍历二叉树
  10. 雕刻在LINUX内核中的LINUS故事
  11. asp.net的10个提升性能或扩展性的秘密(一)
  12. 程序员自编 “购房宝典” 火爆 GitHub!
  13. 网络Excel平台(myEXCEL.net)企业应用
  14. 荣耀70 Pro+什么时候发布 荣耀70 Pro+配置参数详情
  15. 黑帽SEO的常见操作手法解析
  16. Worker节点加入K8S集群报错:error execution phase preflight: couldn‘t validate the identity of the API Server
  17. js UUID 生成
  18. aurora_8b10b通信
  19. 微信内分享链接防红防封技术系统的实现方案
  20. python和java都是用c文件吗_python是用C实现的,Java是用C++实现的,那为什么不直接用C或C++呢?...

热门文章

  1. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析
  2. ファイルアップロード関連のjQueryプラグイン10攻略
  3. Ubuntu安装并使用sogou输入法
  4. 优酷电视剧爬虫代码实现一:下载解析视频网站页面(3)补充知识点:htmlcleaner使用案例...
  5. iframe子页面内刷新父页面中另一个iframe子页面
  6. Learn Python—表达式、数据类型、流程控制
  7. DataGridView动态添加新行的两种方法
  8. python基础 函数 (四)
  9. PhpStudy 升级 MySQL 版本到5.7
  10. OpenLayers3关于Map Export的Canvas跨域