设计模式学习总结(23) 中介者模式

本系列主要记录设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它;它是怎样解决的,掌握它的结构图,记住它的关键代码;可以想到至少两个它的应用实例,一个生活中的,一个软件中的;这个模式的优缺点是什么,其有哪些使用场景,在使用时要注意什么。

尊重作者,转载请注明晔阳的Bloghttp://blog.csdn.net/hacke2

23.中介者模式

意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不须要显式地相互引用,从而使其耦合松散,并且能够独立地改变它们之间的交互。

主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得非常复杂,同一时候若一个对象发生改变,我们也须要跟踪与之相关联的对象,同一时候做出对应的处理

什么时候使用:多个类相互耦合,形成了网状结构

怎样解决 :将上述网状结构分离为星型结构

结构图

关键代码:对象 Colleague 之间的通信封装到一个类种单独处理

应用实例:1 、中国增加WTO,之前是各个国家相互贸易,结构复杂,如今是各个通过WTO来互相贸易 2、机场调度系统 3、 MVC框架,当中C(控制器)就是M和V的中介者

长处: 1、减少了类的复杂度将一对多转化成了一对一 2、各个类之间的解耦 3、符合迪米特原则

缺点: 1、中介者会庞大,变得复杂难以维护

使用场景:1、 系统中对象之间存在比較复杂的引用关系,导致他们之间的依赖关系结构混乱并且难以复用该对象。

2、 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

注意事项:不应当在职责混乱的时候使用

时间: 2024-08-23 13:15:47

设计模式学习总结(23) 中介者模式的相关文章

设计模式学习08:享元模式

设计模式学习08:享元模式 参考资料 https://www.jianshu.com/p/a2aa75939766 https://www.cnblogs.com/adamjwh/p/9070107.html 简介 Use sharing to support large numbers of fine-grained objects efficiently. 使用共享对象可有效地支持大量的细粒度的对象. 享元模式(Flyweight)又称为 轻量级模式,它是一种对象结构型模式. 面向对象技术可

学习日记之中介者模式和Effective C++

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互. (1),中介者模式很容易在系统中应用,也很容易在系统中误用.当系统出现多对多交互复杂的对象群时,不要急于使用中介者模式,而要反思你在系统的设计上是不是合理. (2),中介者的出现减少了各个对象的耦合,使得可以独立地改变和复用各个对象和中介者. (3),由于把对象如何协作进行了抽象,将中介者作为一个独立的概念并将其封装在一个对象中,这样关注

PHP设计模式学习笔记: 责任链模式(Chain of Responsibility)

// 抽象书本类 abstract class AbstractBookTopic { abstract function getTopic(); abstract function getTitle(); abstract function setTitle($title_in); } // 书本类,继承自抽象书本类 class BookTopic extends AbstractBookTopic { private $topic; private $title; function __co

设计模式16:Mediator 中介者模式(行为型模式)

Mediator 中介者模式(行为型模式) 依赖关系的转化 动机(Motivation) 在软件构建过程中,经常出现多个对象互相关联交互的情况,对象之间经常会维持一种复杂的应用关系,如果遇到一些需求的更改,这种直接的引用将面临不断的变化. 在这种情况下,我们可以使用一个“中介对象”来管理对象间的关联关系,避免相互的对象之间的紧耦合引用关系,从而更好地抵御变化. 意图(Intent) 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们

设计模式(行为型)之中介者模式(Mediator Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<设计模式(行为型)之职责链模式(Chain of Responsibility Pattern)>http://blog.csdn.net/yanbober/article/details/45531395 概述 如果对象之间的联系呈现为网状结构,存在大量的多对多联系,在网状结

C#设计模式之12:中介者模式

中介者模式 在asp.net core中实现进程内的CQRS时用mediatR是非常方便的,定义command,然后定义commandhandler,或者notification和notificationhandler.我们发现使用这个组件库可以将对象与对象间完全解耦,它不像命令模式那样,在ConcreteCommand类中必须包含一个Receiver的字段来执行真正的代码逻辑,在mediatR的支持下,command和commandhanlder是完全解耦的,他们之间没有任何的继承或者组合关系

从王者荣耀看设计模式(二十一.中介者模式)

从王者荣耀看设计模式(中介者模式) 一.简介 在王者荣耀中,有一个简单的聊天室,在聊天室中.玩家点击综合可以与全服的玩家发送消息,点击好友可向指定好友玩家私发信息.|??ω?` ) 二.模式动机 联合国是一个协调组织,各个国家就一些共同问题经由联合国进行协商,它取代了原本各个国家之间的直接交流,将各个成员国之间的强耦合关系转换为较为松散的耦合关系.在软件开发中,我们有时候也会需要使用类似联合国一样的中间对象来降低系统中类与类,对象与对象之间的耦合关系. 在本实例中,玩家与玩家多对多的通信,导致用

设计模式课程 设计模式精讲 24-1 中介者模式讲解

1 课程讲解 1.1 类型: 1.2 定义: 1.3 适用场景: 1.4 优点: 1.5 缺点: 1.6 中介者相关的设计模式 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆定义一个封装一组对象如何交互的对象◆通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互 1.3 适用场景: ◆系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解◆交互的公共行为,如果需要改变行为则可以增加新的中介者类 例如聊天室,聊天室里有10个人,我只需要在聊天室说一句话就可以

设计模式 --&gt; (14)中介者模式

中介者模式 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模式的例子很多,大到联合国安理会,小到房屋中介,都扮演了中间者的角色,协调各方利益. 示例 本文就以租房为例子,如果没有房屋中介,那么房客要自己找房东,而房东也要自己找房客,非常不方便.有了房屋中介机构就方便了,房东可以把要出租的房屋信息放到中介机构,而房客可以去中介机构咨询. 在软件中,就是多个对象之间需要通信,如果没有中介,对象就需要知道其他对象,最