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

相关推荐
阿俊仔(摸鱼版)3 分钟前
Python 常用运维模块之OS模块篇
运维·开发语言·python·云服务器
军训猫猫头4 分钟前
56.命令绑定 C#例子 WPF例子
开发语言·c#·wpf
sunly_11 分钟前
Flutter:自定义Tab切换,订单列表页tab,tab吸顶
开发语言·javascript·flutter
远方 hi21 分钟前
linux虚拟机连接不上Xshell
开发语言·php·apache
涛ing30 分钟前
23. C语言 文件操作详解
java·linux·c语言·开发语言·c++·vscode·vim
NoneCoder31 分钟前
JavaScript系列(42)--路由系统实现详解
开发语言·javascript·网络
半桔34 分钟前
栈和队列(C语言)
c语言·开发语言·数据结构·c++·git
阿猿收手吧!42 分钟前
【Linux网络总结】字节序转换 收发信息 TCP握手挥手 多路转接
linux·服务器·网络·c++·tcp/ip
九离十1 小时前
C语言教程——文件处理(1)
c语言·开发语言
小高不明1 小时前
仿 RabbitMQ 的消息队列3(实战项目)
java·开发语言·spring·rabbitmq·mybatis