【软考】设计模式之中介者模式

目录

          • [1. 说明](#1. 说明)
          • [2. 应用场景](#2. 应用场景)
          • [3. 结构图](#3. 结构图)
          • [4. 构成](#4. 构成)
          • [5. 适用性](#5. 适用性)
          • [6. 优点](#6. 优点)
1. 说明
  • 1.用一个中介对象来封装一系列的对象交互。
  • 2.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
  • 3.中介者模式(Mediator Pattern)是一种行为设计模式,主要用于降低系统中对象之间的耦合度,提高系统的灵活性和可维护性。
  • 4.中介者模式定义了一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。
  • 5.在中介者模式中,各个对象不再直接相互引用和通信,而是通过中介者来进行间接通信。
2. 应用场景
  • 1.系统中存在多个对象之间复杂的交互关系时,可以使用中介者模式来简化这些交互。
  • 2.当系统中的对象之间需要解耦,减少直接依赖时,可以使用中介者模式。
  • 3.当系统中的对象交互关系需要独立于各个对象的实现而变化时,可以使用中介者模式。
3. 结构图
4. 构成
  • 1.抽象中介者(Mediator):定义一个接口,该接口用于定义各同事(Colleague)对象之间进行通信需要的方法。
  • 2.具体中介者(ConcreteMediator):实现抽象中介者接口,通过协调各个同事对象来实现协作行为,了解并维护它的各个同事,它维持了对各个同事对象的引用。
  • 3.抽象同事类(Colleague):定义各个同事类公有的方法,并声明了一些抽象方法来供子类实现,同时它维持了一个对抽象中介者类的引用,其子类可以通过该引用来与中介者通信。
  • 4.具体同事类(ConcreteColleague):实现抽象同事类,每一个同事对象在需要和其他同事对象通信时,先与中介者通信,通过中介者来间接完成与其他同事类的通信。
5. 适用性
  • 1.一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。
  • 2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
  • 3.想定制一个分布在多个类中的行为,而又不想生成太多的子类。
6. 优点
  • 1.降低耦合度:通过引入中介者对象,各个对象之间的直接依赖关系被减少,使得系统结构更加灵活和可扩展。

  • 2.简化交互:中介者模式将对象之间的多对多交互关系转换为中介者与各个对象之间的一对多关系,简化了对象之间的交互逻辑。

  • 3.易于维护和扩展:由于对象之间的交互被集中到中介者对象中,因此当需要修改或扩展对象之间的交互时,只需修改中介者对象,而不需要修改各个对象的代码。

相关推荐
alibli25 分钟前
一文学会设计模式之创建型模式及最佳实现
c++·设计模式
1024肥宅2 小时前
前端常用模式:提升代码质量的四大核心模式
前端·javascript·设计模式
郝学胜-神的一滴6 小时前
设计模式依赖于多态特性
java·开发语言·c++·python·程序人生·设计模式·软件工程
帅次7 小时前
系统分析师:软件需求工程的软件需求概述、需求获取、需求分析
设计模式·重构·软件工程·团队开发·软件构建·需求分析·规格说明书
EXtreme357 小时前
【数据结构】算法艺术:如何用两个栈(LIFO)优雅地模拟队列(FIFO)?
c语言·数据结构·算法·设计模式·栈与队列·摊还分析·算法艺术
1024肥宅1 天前
JavaScript常用设计模式完整指南
前端·javascript·设计模式
特立独行的猫a1 天前
C++观察者模式设计及实现:玩转设计模式的发布-订阅机制
c++·观察者模式·设计模式
_Minato_1 天前
数据库知识整理——数据库控制功能
数据库·经验分享·笔记·软考·计算机系统
better_liang1 天前
每日Java面试场景题知识点之-单例模式
java·单例模式·设计模式·面试·企业级开发
sg_knight1 天前
什么是设计模式?为什么 Python 也需要设计模式
开发语言·python·设计模式