框架架构 + 设计模式结构图
2026/6/23 7:57:49 网站建设 项目流程

目录

框架架构 + 设计模式结构图(文字结构化框图,可直接存文档)

一、分层绑定设计模式明细(逐个模块对应)

1、单例模式 Singleton(全局三大管理类)

2、MVC 架构模式(整体分层架构)

3、发布订阅 + 观察者模式 Pub/Sub + Observer(EventBus 事件总线)

4、中介者模式 Mediator(WindowManager、ModelManager)

5、生产者消费者模式 Producer-Consumer(CommLib+DataLib+DataQueue)

6、简单工厂模式 Factory(ModelManager)

7、策略模式 Strategy(DataDispatcher 数据分发逻辑)

8、模块化 DLL 插件化模式(工程 subdirs + Q_DECL_EXPORT/IMPORT)

二、数据全链路流转图(结合模式)

三、拓展:后续新增业务扩展规则(依托现有设计模式)

项目架构亮点

一、整体架构层面

1. 分层解耦 + 单向依赖,架构边界清晰

2. 标准 MVC 架构,界面与数据彻底分离

3. 全模块 DLL 模块化拆分,适配团队多人开发

二、通信与并发能力亮点

1. 线程物理隔离 + 生产者消费者模型,高并发不卡顿

2. 统一事件总线,模块间零耦合通信

三、全局管理设计亮点

1. 全局服务统一单例化,调用规范、资源可控

2. 集中式窗口管理器,界面统一管控

四、扩展性与可维护性亮点

1. 遵循开闭原则,扩展能力极强

2. 单向数据流,问题定位简单

3. 技术选型成熟,工业级稳定性

五、工程化与落地亮点

1. 工程结构标准化,编译部署流程规范

2. 代码分层约束严格,规避典型坑点

精简版(适合 PPT / 口头汇报)


​​​​​​​框架架构 + 设计模式结构图(文字结构化框图,可直接存文档)

plaintext

┌─────────────────────────────────────────────────────────────────────────┐ │ MainApp(EXE主程序) │ │ 职责:组装各个DLL模块、程序入口、实例化窗口与服务 │ └───────────────┬───────────────────┬───────────────────┬────────────────┘ │ │ │ ┌───────────▼──────┐ ┌────────▼───────┐ ┌──────▼────────┐ │ ModulesLib(DLL)│ │ ModelLib(DLL) │ │ DataLib(DLL) │ │ 【View视图层】 │ │【Model模型层】 │ │【数据调度层】 │ │ MVC-View │ │ MVC-Model │ │ 调度控制 │ └───────┬─────────┘ └───────┬─────────┘ └──────┬────────┘ │ │ │ ┌───────────▼────────────────────▼────────────────────▼────────┐ │ CoreLib(DLL 底层中枢) │ │ 【Mediator中介+Pub/Sub发布订阅+单例全局中心】 │ │ EventBus(事件总线) + WindowManager + ModelManager │ └───────────┬──────────────────────────────────────────────────┘ │ ┌───────▼────────┐ │ CommLib(DLL) │ │【网络生产层】 │ │ WebSocket线程 │ └───────┬────────┘ │ ┌───────────▼──────────────────────────────────────────────────┐ │ 生产者-消费者模型(DataQueue线程安全队列) │ │ 生产者:WebSocket子线程源源不断接收WS原始数据(生产数据) │ │ 消费者:DataDispatcher定时器循环取出数据(消费解析分发) │ └──────────────────────────────────────────────────────────────┘

一、分层绑定设计模式明细(逐个模块对应)

1、单例模式 Singleton(全局三大管理类)

表格

类名作用
EventBus::instance()全局唯一事件总线,全模块共用一套消息总线
WindowManager::instance()全局窗口管理器,统一创建 / 显示所有界面
ModelManager::instance()全局模型管理器,统一管理设备 / 告警 / 曲线数据模型

优点:全局唯一实例,避免重复构造,跨 DLL 任意位置调用。

2、MVC 架构模式(整体分层架构)

  • M(Model) → ModelLib:DeviceModel/AlarmModel/CurveModel,只存储数据、提供更新接口,无任何 UI 依赖
  • V(View) → ModulesLib:各类 Widget 界面,只负责渲染展示,不操作原始数据源
  • C (Control) → DataDispatcher+EventBus (C 层调度中枢):数据接收→解析→更新模型→总线分发,衔接 M 与 V

3、发布订阅 + 观察者模式 Pub/Sub + Observer(EventBus 事件总线)

plaintext

发布方:DataDispatcher → EventBus->post(类型,数据)【发布事件】 订阅方:各个Widget绑定sigEvent信号【订阅事件】
  • 数据层、界面层无头文件互相包含,完全解耦;新增业务窗口只需订阅对应事件,不用改动原有数据代码。

4、中介者模式 Mediator(WindowManager、ModelManager)

  1. WindowManager:所有界面统一注册到管理器,界面之间互不引用,由中介统一控制显示 / 隐藏
  2. ModelManager:所有 Model 统一托管,上层通过中介获取模型,模型之间低耦合

5、生产者消费者模式 Producer-Consumer(CommLib+DataLib+DataQueue)

  • 生产者:WebSocket 子线程,收到 WS 报文 → push 入线程安全队列(生产数据)
  • 消费者:DataDispatcher 定时器 (33ms) 循环从队列 pop 数据(消费解析)
  • 解决:高频 50ms 推送海量数据、子线程与 UI 线程隔离、防 UI 卡顿、削峰防丢包(工控高频数据标准方案)

6、简单工厂模式 Factory(ModelManager)

ModelManager 内部提前 new 好所有模型实例,外部不用new DeviceModel(),统一由管理器提供实例:ModelManager->getDev()getAlarm()getCurve(),统一对象创建入口。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询