当前位置: 首页 > news >正文

设计模式: 访问者模式

文章目录

  • 一、介绍
  • 二、模式结构
  • 三、优缺点
    • 1、优点
    • 2、缺点
  • 四、应用场景

一、介绍

Visitor 模式(访问者模式)是一种行为设计模式,它允许在不修改对象结构的前提下,增加作用于一组对象上新的操作。就增加新的操作而言,Visitor 模式把新的操作作为访问者(Visitor)加到对象中,而不是修改那些类的代码。这样,新的操作就可以被应用到所有对象上,而无需修改这些对象的类。

二、模式结构

Visitor 模式主要包含以下几个角色:

  • Visitor(访问者):接口声明了一个或多个访问操作,形成所有的具体元素角色必须实现的接口。
  • ConcreteVisitor(具体访问者):实现 Visitor 接口,也就是实现一个具体的访问操作。
  • Element(元素):声明了一个接受访问者对象的方法(即 accept 方法),该方法通常是一个空实现或只声明了接口。
  • ConcreteElement(具体元素):实现了 Element 接口,存储或定义了一个相关的数据操作,并可以定义一个或多个 accept 操作,以便接受访问者的访问。
  • ObjectStructure(对象结构):是一个元素的集合,且能枚举它的元素,可以提供一个高层的接口以允许访问者访问它的元素。

三、优缺点

1、优点

  • 增加新的操作很容易:只需要增加一个新的访问者类即可。
  • 将有关的行为集中到一个访问者对象中:而不是分散到多个元素类中。
  • 可以绕过通常的继承机制,来访问和修改一个类的内部状态。
  • 使得增加新的元素类变得容易:因为接受操作被集中在一个访问者接口中,所以增加新的元素类不需要修改访问者类的代码。

2、缺点

  • 增加新的元素类很困难:每增加一个新的元素类,都需要在所有的具体访问者类中增加相应的具体操作实现,这违反了“开闭原则”。
  • 破坏封装:访问者可以访问并修改元素的状态,这可能会违反封装原则。

四、应用场景

  • 当一个系统需要对一个对象结构中的对象进行很多不同的操作(这些操作彼此不相关),同时又不希望这些操作的方法定义在元素的类的里面时。
  • 当需要对一个对象结构中的对象进行与对象本身无关的操作时。
  • 当这些操作以后会动态地增加或减少时。
http://www.lryc.cn/news/427188.html

相关文章:

  • selenium底层原理详解
  • 【Solidity】继承
  • docker 安装mino服务,启动报错: Fatal glibc error: CPU does not support x86-64-v2
  • 地图相册系统的设计与实现
  • 使用vh和rem实现元素响应式布局
  • 螺旋矩阵 II(LeetCode)
  • 如何快速掌握一款MCU
  • XSS-DOM
  • uniapp去掉页面导航条
  • MySQL数据库专栏(三)数据库服务维护操作
  • 【QT】基于UDP/TCP/串口 的Ymodom通讯协议客户端
  • 超详细!!!electron-vite-vue开发桌面应用之引入UI组件库element-plus(四)
  • 【排序篇】实现快速排序的三种方法
  • Java 标识符(详解)
  • 2024年,有哪些优质的计算机书籍推荐?
  • Python基础知识点--总结
  • 高效记录与笔记整理的策略:工具选择、结构设计与复习方法
  • Request重复读的问题
  • Linux学习第60天:Linux驱动开发的一些总结
  • OPP || 继承和抽象类 || 访问控制
  • 蓝牙音视频远程控制协议(AVRCP) command跟response介绍
  • MySQL的InnoDB存储引擎中的Buffer Pool机制
  • 5. MongoDB 文档插入、更新、删除、查询
  • ⌈ 传知代码 ⌋ DETR[端到端目标检测]
  • Oracle之触发器
  • 从零搭建微前端架构:解耦大型项目的终极方案
  • 24/8/17算法笔记 MPC算法
  • GROUP_CONCAT 用法详解(Mysql)
  • Golang httputil 包深度解析:HTTP请求与响应的操控艺术
  • SQLALchemy 分页