2019独角兽企业重金招聘Python工程师标准>>>

Mediator中介者设计模式是通过一个中介对象封装一系列关于对象交互行为.

Mediator中介者设计模式中的角色如下:

(1).中介者(Mediator):抽象定义了“同事”(colleagues,稍后有定义)们通信的接口。

(2).具体中介者(Concrete Mediator):实现了“同事”间的通信接口。

(3).同事(Colleague):参与通信的实体抽象。

(4).具体同事(Concrete Colleague):实现的参与通信的实体。

Mediator中介者设计模式结构如下:

以私信聊天为例来简单演示Mediator中介者设计模式,例子代码如下:

//中介者
interface Mediator{public void send(String msg, Person person);
}//具体中介者
class ConcreteMediator implements Mediator{//中介者所联系的交互对象private PersonA personA;private PersonA personB;public void setPersonA(PersonA  personA){this.personA = personA;}Public void setPersonB(PersonB personB){this.personB = personB;}public void send(String msg, Person person){if(person.equals(personA)){personA.greeting(msg);}else{personB.greeting(msg);}}
} //抽象同事
abstract class Person{//同事和中介者打交道protected Mediator mediator;public Person(Mediator mediator){this.mediator = mediator;}
}//具体同事
class PersonA extends Person{public PersonA(Mediator mediator){super(mediator);}public void send(String msg){mediator.send(msg, this);}public void greeting(string msg){System.out.println(“PersonA: ” + msg);}
} class PersonB extends Person{public PersonB(Mediator mediator){super(mediator);}public void send(String msg){mediator.send(msg, this);}public void greeting(string msg){System.out.println(“PersonB: ” + msg);}
} public class MediatorDemo{public static void main(String[] args){//创建中介Mediator mediator = new ConcreteMediator();//创建同事,并为同事设置中介Person personA = new PersonA(mediator);Person personB = new PersonB(mediator);//向中介设置同事mediator.setPersonA(personA);mediator.setPersonB(personB);//开始聊天personA.send(“Hi, B!”);personB.send(“Hello, A!”);}
}

在对象之间的交互操作非常多的情况下;每个对象的行为操作都可能依赖很多其他对象,修改一个对象的行为的同时可能会影响到很多其他对象的行为,如果使用Mediator模式,可以使各个对象间的耦合松散,只需关心和 Mediator的关系,使多对多的关系变成了一对多的关系,在降低系统复杂性的同时提高可修改扩展性.

转载于:https://my.oschina.net/hongdengyan/blog/196348

设计模式20——Mediator设计模式相关推荐

  1. java mediator模式_设计模式之Mediator 中介者模式 - 解道Jdon

    设计模式目录 >> 当前页 设计模式之Mediator(中介者) 板桥里人 http://www.jdon.com 2002/05/05 Mediator中介者模式定义: 用一个中介对象来 ...

  2. 20个设计模式和软件设计面试问题

    20个设计模式和软件设计面试问题 摘要:不管是参加Java面试还是C#面试,设计模式和软件设计都 是任何编程面试中的必问问题.实际上,编程能力和设计技巧是对彼此很好的补充.一个好的程序员通常都是一个好 ...

  3. 备战面试日记(3.3) - (设计模式.23种设计模式之结构型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.9 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  4. java设计模式:23种设计模式及其源代码演示实现

    java23种设计模式及其源代码演示实现 博主在CSDN已有三年,之前一直在看贴,受益颇多,不可多得的一个良好的学习平台,这一次,博主给大家分享一份传说中的java设计模式,源代码与其实现全部都有,希 ...

  5. 备战面试日记(3.4) - (设计模式.23种设计模式之行为型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.12 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文 ...

  6. [Head First设计模式]生活中学设计模式——迭代器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  7. java设计模式教程_Java设计模式教程

    java设计模式教程 课程大纲 架构和计算机科学中的设计模式是记录特定专业领域中设计问题的解决方案的正式方法. 这个想法是由建筑师Christopher Alexander在建筑领域引入的,并已被修改 ...

  8. 行为设计模式 - 访客设计模式

    行为设计模式 - 访客设计模式 访客设计模式是行为设计​​模式之一. 目录[ 隐藏 ] 1访客设计模式 1.1访客设计模式Java示例 1.2访客设计模式类图 1.3访客模式的好处 1.4访客模式限制 ...

  9. 行为设计模式 - 责任链设计模式

    行为设计模式 - 责任链设计模式 责任链设计模式是行为设计模式之一. 目录[ 隐藏 ] 1责任链设计模式 1.1 JDK中的责任链模式示例 1.2责任链设计模式实例 1.3责任链设计模式 - 基类和接 ...

最新文章

  1. 2022-2028年中国喹烯酮行业市场研究及前瞻分析报告
  2. matlab图片插值数据_使用双线性插值法放大图像(matlab实现)
  3. IndexError: too many indices for array
  4. 【面试】2018大厂高级前端面试题汇总
  5. 微服务架构下,解决数据一致性问题的实践 1
  6. 用JavaScript实现2+2=5的奥秘
  7. shell脚本--使用for循环逐行访问txt文件
  8. 【转】ASP.NET内幕 - IIS处理模型
  9. 一起学设计模式 - 桥接模式
  10. 区块链 分片技术和闪电网络区别
  11. HTML5移动应用开发为什么需要引入前端工程化
  12. IP66 IP67 防护等级介绍
  13. python多线程爬堆糖的图片
  14. h3c交换机重启_h3c交换机重置命令_h3c交换机如何初始化
  15. Widget-苹果.谷歌和诺基亚着迷的网络新思维
  16. AFM测试图像假象及其应对
  17. 南京(选自 余秋雨《文化苦旅》)
  18. LightOJ-1012-Guilty Prince [DFS]
  19. windows系统C盘越来越大怎么办(包括win10)
  20. 贵大和云大计算机,云南大学和贵州大学哪个实力更强?有哪些优势学科?

热门文章

  1. 第22章:MongoDB-聚合操作--聚合管道--$out
  2. Django forms组件
  3. MSDN帮助文档 无法显示该网页 的问题解决方案(转)
  4. typedef struct 用法
  5. ASP.NET_读写Cookie
  6. CSS-合理使用z-index控制盒子视轴高度,解决z-index失效
  7. ApplePay集成教程
  8. React基础学习(第一天)
  9. linux chrome 安装过程记录
  10. 在eclipse中创建第一个java应用程序,并在控制台输出“hello world”。