GoF设计模式:中介者模式(Mediator Pattern)—协调多个对象之间的交互-C/S开发框架
模式概述很多在一线城市漂泊的朋友或多或少都会遇到租房的难题,你是怎样找到物美价廉的房子的呢,可以在评论区分享经验哦。相信大多数小伙伴是通过 未引入中介者,对象之间(这些对象称为 引入中介者可以使对象之间的关系数量急剧减少。在这个星形结构中,对象不再直接与另一个对象联系,它通过中介者对象与另一个对象发生相互作用。 模式定义如果在一个系统中对象之间存在多对多的相互关系,我们可以将对象之间的一些交互行为从各个对象中分离出来,并集中封装在一个中介者对象中,并由该中介者进行统一协调,这样对象之间多对多的复杂关系就转化为相对简单的一对多关系。通过引入中介者来简化对象之间的复杂交互,中介者模式是“迪米特法则”的一个典型应用。
模式结构图在中介者模式中,引入了用于协调其他对象/类之间相互调用的中介者类,为了让系统具有更好的灵活性和可扩展性,通常还提供了抽象中介者,其结构图如下图所示: 在中介者模式结构图中包含如下几个角色:
中介者模式的核心在于中介者类的引入,在中介者模式中,中介者类承担了两方面的职责: (1) 中转作用(结构性):通过中介者提供的中转作用,各个同事对象就不再需要显式引用其他同事,当需要和其他同事进行通信时,可通过中介者来实现间接调用。该中转作用属于中介者在结构上的支持。 (2) 协调作用(行为性):中介者可以更进一步的对同事之间的关系进行封装,同事可以一致的和中介者进行交互,而不需要指明中介者需要具体怎么做,中介者根据封装在自身内部的协调逻辑,对同事的请求进行进一步处理,将同事成员之间的关系行为进行分离和封装。该协调作用属于中介者在行为上的支持。 模式伪代码典型的抽象中介者类、抽象同事类典型代码如下:
具体中介者类、具体同事类实现这些抽象方法,典型代码如下:
模式应用待完善... 模式总结中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。中介者模式在 主要优点(1) 中介者模式简化了对象之间的交互,它用中介者和同事的一对多交互代替了原来同事之间的多对多交互,一对多关系更容易理解、维护和扩展,将原本难以理解的网状结构转换成相对简单的星型结构。 (2) 中介者模式可将各同事对象解耦。中介者有利于各同事之间的松耦合,我们可以独立的改变和复用每一个同事和中介者,增加新的中介者和新的同事类都比较方便,更好地符合“开闭原则”。 (3) 可以减少子类生成,中介者将原本分布于多个对象间的行为集中在一起,改变这些行为只需生成新的中介者子类即可,这使各个同事类可被重用,无须对同事类进行扩展。 主要缺点中介者类中包含了大量同事之间的交互细节,可能会导致具体中介者类非常复杂,使得系统难以维护。 适用场景(1) 系统中对象之间存在复杂的引用关系,系统结构混乱且难以理解。 (2) 一个对象由于引用了其他很多对象并且直接和这些对象通信,导致难以复用该对象。 (3) 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。可以通过引入中介者类来实现,在中介者中定义对象交互的公共行为,如果需要改变行为则可以增加新的具体中介者类。
参考文档:
C/S开发框架提供类似SAP系统的快速命令,能快速打开界面窗体(Command模式) ASP.NET IIS程序池被回收导致网站打开慢,IIS配置启用预加载模式-C/S开发框架 软件编程之软件架构设计(学习)-C/S开发框架 GoF设计模式:单例模式(Singleton Pattern)—确保对象的唯一性-C/S开发框架 GoF设计模式:适配器模式(Adapter Pattern)—不兼容结构的协调-C/S开发框架 GoF设计模式:迭代器模式(Iterator Pattern)—遍历聚合对象中的元素 -C/S开发框架 GoF设计模式:组合模式(Composite Pattern)—树形结构的处理-C/S开发框架 GoF设计模式:建造者模式(Builder Pattern)—复杂对象的组装与创建-C/S开发框架 GoF设计模式:访问者模式(Visitor Pattern)—操作复杂对象结构-C/S开发框架 GoF设计模式:享元模式(Flyweight Pattern)—实现对象的复用-C/S开发框架 GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架 GoF设计模式:命令模式(Command Pattern)—请求发送者与接收者解耦-C/S开发框架 GoF设计模式:职责链模式(Chain of Responsibility Pattern)—请求的链式处理-C/S开发框架 GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架 GoF设计模式:代理模式(Proxy Pattern)—对象的间接访问-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |