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元素。

相关推荐
q567315237 分钟前
IBM官网新闻爬虫代码示例
开发语言·分布式·爬虫
能工智人小辰8 分钟前
Codeforces Round 509 (Div. 2) C. Coffee Break
c语言·c++·算法
笨笨马甲13 分钟前
附加模块--Qt OpenGL模块功能及架构
开发语言·qt
梦星辰.17 分钟前
VSCode CUDA C++进行Linux远程开发
linux·c++·vscode
pan_junbiao24 分钟前
Spring框架的设计模式
java·spring·设计模式
Tianyanxiao34 分钟前
华为×小鹏战略合作:破局智能驾驶深水区的商业逻辑深度解析
大数据·人工智能·经验分享·华为·金融·数据分析
whoarethenext1 小时前
C++ OpenCV 学习路线图
c++·opencv·学习
闻缺陷则喜何志丹1 小时前
【强连通分量 缩点 拓扑排序】P3387 【模板】缩点|普及+
c++·算法·拓扑排序·洛谷·强连通分量·缩点
钮钴禄·爱因斯晨1 小时前
Java 面向对象进阶之多态:从概念到实践的深度解析
java·开发语言·数据结构
鸽子炖汤1 小时前
Java中==和equals的区别
java·开发语言·jvm