C++ QT设计模式:访问者模式

基本概念

访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变被访问类的前提下,定义对其进行操作的新操作。

实现的模块有:

  • ObjectStructure(对象结构):用于存储 Element 对象,提供了遍历元素的方法。

  • Visitor(访问者):声明了对不同 Element 的访问方法。

  • ConcreteVisitor(具体访问者):实现了 Visitor 的访问方法,定义了对每种元素的具体访问逻辑。

  • Element(元素):定义了接受 Visitor 访问的方法。

  • ConcreteElement(具体元素):实现了 Element 的被访问方法,定义了接受访问者的具体逻辑。

使用场景

当不希望去修改一个类的内部结构,但是要给这个类添加大量操作时。

或者说,不希望对一个类的操作"污染"了这个类本身时。

实现

qFind

qFind 函数类似于 std::find 函数,但是现在已经过时,不建议使用。实现qFind的例子为:

复制代码
QList<int> numbers = {1, 2, 3, 4, 5};
int index = qFind(numbers.begin(), numbers.end(), 3) - numbers. Begin();

在这个例子里:

qFind:具体访问者(Concrete Visitor),实现了具体的查找特定逻辑的功能。

**int :**ConcreteElement(具体元素),提供了qFind的访问方法。

QList<int> numbers :ObjectStructure(对象结构),储存了大量的int元素。

相关推荐
云中飞鸿2 分钟前
结合项目阐述 设计模式:单例、工厂、观察者、代理
设计模式
一只小风华~1 小时前
JavaScript 函数
开发语言·前端·javascript·ecmascript·web
苕皮蓝牙土豆1 小时前
Qt 分裂布局:QSplitter 使用指南
开发语言·qt
略无慕艳意2 小时前
【笔记】Visual Studio 2022 入门指南
c++·c·cmake·microsoft visual studio 2022
Brookty4 小时前
Java线程安全与中断机制详解
java·开发语言·后端·学习·java-ee
飞速移动的代码菌4 小时前
【DataWhale】快乐学习大模型 | 202507,Task08笔记
笔记·学习
不在了情绪5 小时前
[ The Missing Semester of Your CS Education ] 学习笔记 Vim篇
笔记·学习·vim
试着5 小时前
零基础学习性能测试第五章:JVM性能分析与调优-JVM概念,java程序运行原理
java·jvm·学习·零基础·性能测试
從南走到北5 小时前
JAVA东郊到家按摩服务同款同城家政服务按摩私教茶艺师服务系统小程序+公众号+APP+H5
android·java·开发语言·微信小程序·小程序
蝸牛ちゃん5 小时前
设计模式(二十四)行为型:访问者模式详解
设计模式·系统架构·软考高级·访问者模式