模式简介

调停者模式用于系统内各模块之间显式调用的解耦,模块之间不进行直接的相互调用,而是通过调停者来间接调用。

模式UML图

代码示例(C#)

提示:可在本栏目的资源篇“设计模式代码示例合集”下载所有完整代码资源。

    //调停者类class Mediator : AbstractMediator{private SeniorManagement senior = null;private List<SimpleEmployee> employees = new List<SimpleEmployee>();public override void Register(AbstrctStaff p_staff){if (p_staff is SeniorManagement) senior = (SeniorManagement)p_staff;else employees.Add((SimpleEmployee)p_staff);}public override void Recevice(AbstrctStaff p_staff){if (p_staff is SimpleEmployee){p_staff.Recevice(senior.name);}else{foreach (SimpleEmployee e in employees){p_staff.Recevice(e.name);}}}public override void Send(AbstrctStaff p_staff){p_staff.Send();}}//公司普通员工类class SimpleEmployee : AbstractEmployee{public SimpleEmployee(string p_name, AbstractMediator p_mediator) : base(p_mediator){name = p_name;mediator.Register(this);}}//公司高管类class SeniorManagement : AbstractManagement{public SeniorManagement(string p_name, AbstractMediator p_mediator) : base(p_mediator){name = p_name;mediator.Register(this);}}//调停者抽象类public abstract class AbstractMediator{public abstract void Register(AbstrctStaff p_staff);public abstract void Recevice(AbstrctStaff p_staff);public abstract void Send(AbstrctStaff p_staff);}//公司普通员工抽象类public abstract class AbstractEmployee : AbstrctStaff{public AbstractEmployee(AbstractMediator p_mediator){mediator = p_mediator;}public override void Recevice(string p_seniorManagementName){Console.WriteLine("普通员工" + name + "接收到了" + p_seniorManagementName + "布置的任务!");}public void ReceviceTask(){mediator.Recevice(this);}public override void Send(){Console.WriteLine(name + "提交了报告!");}public void SubmitReport(){mediator.Send(this);}}//公司高管抽象类public abstract class AbstractManagement : AbstrctStaff{public AbstractManagement(AbstractMediator p_mediator){mediator = p_mediator;}public override void Recevice(string p_employeeName){Console.WriteLine(name + "接收了普通员工" + p_employeeName + "的任务报告!");}public void ReceviceReport(){mediator.Recevice(this);}public override void Send(){Console.WriteLine(name + "发布了任务!");}public void DispatchTask(){mediator.Send(this);}}//公司员工抽象类,作为公司高管和普通员工的基类public abstract class AbstrctStaff{protected AbstractMediator mediator;public string name;public abstract void Send();public abstract void Recevice(string p_interactor);}//测试代码public void Test(){Mediator mediator = new Mediator();SeniorManagement seniorManagement = new SeniorManagement("王高管", mediator);SimpleEmployee simpleEmployee1 = new SimpleEmployee("小李", mediator);SimpleEmployee simpleEmployee2 = new SimpleEmployee("小张", mediator);SimpleEmployee simpleEmployee3 = new SimpleEmployee("小吴", mediator);seniorManagement.DispatchTask();simpleEmployee1.ReceviceTask();simpleEmployee2.ReceviceTask();simpleEmployee3.ReceviceTask();simpleEmployee1.SubmitReport();simpleEmployee2.SubmitReport();simpleEmployee3.SubmitReport();seniorManagement.ReceviceReport();}

代码解说

调停者模式体现在系统内各模块之间显式调用的解耦,我们这里就是将Mediator这个类作为调停者,我们把SimpleEmployee与SeniorManagement中的Send和Recevice方法的调用交给Mediator代理,这就避免了二者之间的显示调用,降低模块间的耦合性。

如果这篇文章对你有帮助,请给作者点个赞吧!

Mediator模式(调停者模式)相关推荐

  1. 设计模式(十一)中介者模式(调停者模式)

    1. 中介者模式定义 定义:用一个中介者对象来封装一系列的对象交互.中介者使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互. 中介者模式结构图如下图所示. 在中介者模 ...

  2. 调停者模式(Mediator) Java实现

    调停者模式 调停者模式(Mediator)的定义 调停者模式是对象的行为模式.调停者模式包装了一系列对象相互的方式,使得这些对象不必互相明显作用.从而使它们可以较为松散地耦合.当这些对象中的某些对象之 ...

  3. 2017-01-01 调停者模式

    2017-01-01 调停者模式 Mediator.Colleague.Collaboration |kəˌlæbəˈreɪʃn| Mediator:     调停者模式是对象的行为模式.调停者模式包 ...

  4. 设计模式之调停者模式

    如有转载,请申明: 转载至  http://blog.csdn.net/qq_35064774/article/details/52096987 1 什么是调停者模式 调停者模式包装了一系列对象相互作 ...

  5. 《java与模式》中模式总结

    转自:http://hi.baidu.com/hannick/blog/item/e820d8947d51a541d1135e54.html 设计模式一览表 注:加*的为GoF的23种设计模式. 一. ...

  6. 中介者模式 调停者 Mediator 行为型 设计模式(二十一)

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

  7. [设计模式] 调停者模式(Mediator Pattern)

    什么是调停者模式? 调停者模式是一种旨在降低一系列对象之间耦合关系的设计模式.在一个系统中,对象与对象之间是不可避免发生各种通信,共同合作完成特定的功能.我们把这些对象成为同事对象(Collegue) ...

  8. 设计模式系列-调停者模式-Mediator

    调停者模式简介 良好设计的应用由轻量级的对象组合而成,这些对象具有特定的职责,符合SOILD 的单一职责原则.然而,这些大量轻量级的对象给应用带来好处的同时也带来了对象之间交互通信的挑战.对象间需要通 ...

  9. 《Java设计模式》之调停者模式(Mediator)

    调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从而使它们能够较松散地耦合.当这些对象中的某些对象之间的相互作用发生改变时,不会马上影响到其它的一些 ...

最新文章

  1. 64位Fedora运行32位C++程序中int精度溢出处理
  2. Docker实战9 之Dockerfile深入实践
  3. python selenium post请求_工作随笔——selenium支持post请求,支持自定义header
  4. 关东升的iOS实战系列图书 《iOS实战:传感器卷(Swift版)》已经上市
  5. 修改数据表部分字段方法封装-及-动态生成对象并动态添加属性
  6. 微信公众号开发经验总结
  7. Maven阿里云与本地仓库配置
  8. 大数据_MapperReduce_Hbase_批处理batchMutate源码分析_数据的写入流程源码分析---Hbase工作笔记0032
  9. 《Android游戏开发详解》一1.8 控制流程第2部分——while和for循环
  10. iapp退出软件按钮代码_还在为金蝶财务软件发愁吗?超详细!金蝶财务软件实操流程,速收...
  11. 深入理解 JVM 垃圾回收机制及其实现原理
  12. 链家地产改名链家 转型房产O2O
  13. 黄山杭州五日游攻略,厦门出发
  14. 浏览器调试 console.table() 方法,方便查看json和数组数据内容
  15. 使用Perl编写协议分析脚本
  16. Wormhole连接教程
  17. 培训考试计算机系统,企业培训考试系统
  18. 银行计算机房处理监控设备,银行机房环境集中监控系统【斯必得智慧机房】
  19. q87芯片组支持的服务器CPU,采用英特尔® Q87 芯片组的第四代智能英特尔® 酷睿™ 处理器...
  20. c语言将结构体存储在数组中,结构体数组方法用法 _C语言-w3school教程

热门文章

  1. WIN8.1下Prolific USB-to-Serial Comm Port驱动黄色感叹号问题
  2. 园林工程计算机教程,园林设计全攻略电子教程第1章 园林设计与计算机制图.ppt...
  3. 《VS面向对象及可视化设计 》文本操作实例5-1
  4. linux系统浏览器无声音,在Deepin 20系统中外接显示器切换后浏览器没有声音的解决经历...
  5. OpenMP 学习(二)
  6. VHDL数字频率计的设计
  7. OWASP TOP10 移动安全漏洞(安卓)2017
  8. 【c++】十进制转换成2~36进制
  9. orangepizero2(全志H616)
  10. AngularJS控制器(Controller)