QT设计模式:代理模式

基本概念

代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象,以控制对其他对象的访问。

代理通常在客户端和实际对象之间充当中介,用于控制对实际对象的访问(如登录控制),以提供额外的功能(如缓存),或者在访问实际对象之前进行一些预处理(如延迟加载)。

代理模式实现的模块有:

  • Subject(主题):定义了RealSubject和Proxy的共同接口,客户端通过这个接口访问RealSubject和Proxy。

  • RealSubject(真实主题):定义了实际的业务逻辑,Proxy代理了它。

  • Proxy(代理):保存了一个指向RealSubject对象的引用,在必要时会对RealSubject进行额外的操作,以实现一些附加的功能。

使用场景

  • 需要保护真实主题,不希望客户端直接对真实主题进行操作时。
  • 希望给真实主题添加额外的功能时。
  • 需要控制对真实主题的访问时。

实现

QT的MVC(MVD)模式

MVC 的全名是(Model-View-Controller),在QT里叫MVD(Model-View-Delegate),其中:

  • Model(模型):管理应用程序的数据,并提供接口供视图访问和操作数据,如QStandardItemModel。

  • View(视图):显示模型中的数据,并将用户的操作反馈给模型,如QListView。

  • Delegate(代理):控制视图中数据的显示方式,并允许用户对数据进行编辑。如QItemDelegate。

要实现代理,可以参考QT怎么让模型数据在视图中用自定义组件显示?(通过重写委托中的paint函数)

相关推荐
我爱cope5 分钟前
【从0开始学设计模式-11| 外观模式】
microsoft·设计模式·外观模式
王老师青少年编程12 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【排序贪心】:纪念品分组
c++·算法·贪心·csp·信奥赛·排序贪心·纪念品分组
tankeven13 分钟前
C++ 学习杂记03:std::string 类
c++
学习论之费曼学习法14 分钟前
AI 入门 30 天挑战 - Day 15 费曼学习法版 - 目标检测基础
人工智能·学习·目标检测
一个人旅程~15 分钟前
压缩软件应该选RAR格式还是ZIP格式?高压缩率高安全VS高兼容性之争的何去何从?
linux·windows·经验分享·电脑
H_BB17 分钟前
动态规划详解
c++·算法·动态规划
两年半的个人练习生^_^17 分钟前
每日一学:设计模式之代理模式
java·设计模式·代理模式
看我眼色行事^ \/ ^18 分钟前
完整操作指南
服务器·学习
mxwin19 分钟前
Unity URP 下 TBN 矩阵学习 切线空间、tangent.w 与镜像 UV 的那些坑
学习·unity·矩阵·shader
C语言小火车25 分钟前
嵌入式实习面试问题:那个动态内存是怎么样分配的?
c语言·开发语言·c++·嵌入式硬件·面试