Skip to content

Qt / VTK 设计模式博文系列

基于 Qt 6 与 VTK 官方 API / Kitware 源码撰写,每篇独立讲解一种设计模式。
更新日期:2026-07-19 · 共 23 篇(Qt 12 + VTK 11)


通识导读(建议先读)

文章说明
软件设计原则与模式本质总览SOLID、DRY、深模块原则全景,设计模式本质,变化点管理与重构坏味道
设计模式的思考学习路径、误用与过度设计、易混辨析、工程实践长文

书籍笔记

说明
书籍总索引两本书对照与阅读顺序
程序员修炼之道 · 全书思考务实哲学、DRY、工具与过程(9 章分章)
程序员修炼之道 · 读后感整书浓缩 + 知识点表 + 读后感
软件设计的哲学 · 全书思考复杂度、深模块、战略编程(22 章分章)
软件设计的哲学 · 读后感整书浓缩 + 原则/红旗 + 读后感

GoF 系统课见姊妹系列:ljz-design-patterns/


系列导读

Qt 与 VTK 都是「框架内置设计模式」的典型代表。本系列将 GoF 经典模式与框架真实 API 对应起来,每篇包含:

引子 → 痛点 → GoF 结构 → 框架落点 → 底层机制 → 代码示例 → 易混淆点 → 最佳实践 → 重点与注意 → 延伸阅读

每篇文末 「重点与注意」 用 blockquote 标出高频考点与易错点(不写复杂题库形式,便于速记复习)。

VTK 事件系统进阶(推荐阅读)

Observer 与 Command 在 VTK 中高度融合,深度剖析见:

vtk/01-observer-command-detail.md

入门可先读 vtk/01-observer.mdvtk/02-command.md,再读进阶专题。


推荐阅读顺序

零基础路径(6 篇)

  1. Qt 观察者:信号与槽
  2. Qt 组合:QObject 树
  3. Qt 命令:撤销栈与 QAction
  4. VTK 观察者
  5. VTK vtkCommand(事件回调)
  6. VTK 管道

按主题交叉阅读

主题QtVTK
通知机制01 观察者01 观察者
行为封装 / 回调03 命令(GoF 撤销)02 vtkCommand(Observer 回调体)
结构组织02 组合09 组合
可替换算法04 策略05 策略
对象创建06 工厂07 工厂
内存与垃圾回收09 享元(COW)11 引用计数与 RAII
接口隔离与二进制兼容12 Pimpl/d-指针
数据流03 管道
UI 架构11 MVCParaView 自建层

Qt 完整目录(12 篇)

#模式文章
01观察者qt/01-observer-signals-slots.md
02组合qt/02-composite-qobject-tree.md
03命令qt/03-command-undo-action.md
04策略qt/04-strategy.md
05模板方法qt/05-template-method.md
06工厂qt/06-factory.md
07单例qt/07-singleton.md
08代理qt/08-proxy.md
09享元qt/09-flyweight.md
10中介者qt/10-mediator.md
11MVC/MVqt/11-mvc-model-view.md
12Pimpl/d-指针qt/12-d-pointer-pimpl.md

VTK 完整目录(11 篇)

#模式文章
01观察者vtk/01-observer.md
02vtkCommand(事件回调)vtk/02-command.md
03管道/过滤器vtk/03-pipeline-filter.md
04迭代器vtk/04-iterator.md
05策略vtk/05-strategy.md · 详解
06装饰vtk/06-decorator.md
07工厂vtk/07-factory.md
08原型vtk/08-prototype.md
09组合vtk/09-composite.md
10责任链vtk/10-chain-of-responsibility.md
11引用计数与 RAIIvtk/11-reference-counting-raii.md

Qt vs VTK 模式对照表

模式Qt 典型落点VTK 典型落点
观察者connect 信号槽AddObserver / InvokeEvent
命令 / 回调QUndoCommandQAction(GoF)vtkCommand::Execute(事件回调,非撤销栈)
组合QObject 父子树vtkAssembly / vtkProp
策略QStyleQIODeviceQAbstractItemModelvtkInteractorStylevtkMapper
模板方法QThread::run()paintEventvtkAlgorithm::RequestData(骨架固定)
工厂QStyleFactory、插件vtkObjectFactory::New()
单例QApplication::instance()较少,多用 New() 单实例
代理QSortFilterProxyModel较少,Filter 包装
享元隐式共享、QIcon 缓存数组共享、ShallowCopy
中介者事件循环、eventFilterInteractor 事件分发
MVCModel/View 框架ParaView Representation 层
管道(较少)vtkAlgorithm Pipeline
责任链eventFilterAbortFlag + priority
原型隐式共享 + clone 语义弱DeepCopy / ShallowCopy
装饰QStyle 代理绘制vtkLODActor
迭代器Java-style 容器迭代器vtkCollectionvtkCellIterator

易混淆概念速查

名称QtVTK
CommandQUndoCommand(GoF 撤销)vtkCommand(Observer 事件回调,名字易混)
观察者信号槽AddObserver
工厂QStyleFactoryvtkObjectFactory

其他博文


官方参考

基于 VitePress 强力驱动 | 记录技术与生活