🧩 gmvc2 通用框架
底座 · 以「工厂 / 配方 / 产品」为核心的自定义框架,让配置与运行彻底分离。
📌 技术定位
gmvc2 是一个通用的编程框架,包含通用内存管理、脱耦机制、事件调度以及多种项目通用的底层库支持, 目标场景是游戏开发与 GUI 工具开发。它把配置内容声明为「配方」, 运行时根据配方生产「产品」对象,从而做到配置时不关注产品、运行时不改配方,确保数值与逻辑分离; 其分层设计参考了 AS3 时代的 PureMVC 思想。
.NET 10 / .NET Framework 4.7.2
C# / Nullable
工厂模式
场景隔离
✨ 核心特性
🏭 工厂 / 配方 / 产品
工厂对应「数据库的一张表」,配方对应「一行数据」,产品是运行时根据配方动态生产的对象;产品可进入对象池复用,减少 GC 压力。
🎬 场景(Scene)
服务与工厂注册在场景容器中,可以以场景为单位整体装载与卸载;并支持每客户端独立的 ScopedScene(多客户端防并发、合并项防冲突)。
🧱 服务 / 中介者分离
服务(ServiceBase)对外提供只读数据;中介者(MediatorBase)强制无状态、承载业务协议,其方法与策划文档描述的接口一一对应。
🎯 命令与脱耦
中介者调用有固定生命周期的命令(CommandBase)执行具体业务;三方角色(策划、数值、程序,均可能是 AI Agent)可相互脱耦、同时开发。
🔧 关键技术点
- 分层:设计参考 AS3 时代的 PureMVC 思想,以 CBus 作为全局门面单例。
- 配方元数据:metaId 为主键,配合 id、模型(mod)、作者与日期。
- 字段类型体系:由 RecipeFieldResolver 提供类型特化解析;日期时间统一为 yyyy-MM-dd HH:mm:ss(宽松读、严格写)。
- 数据提供者:内置 JSON 与 SQLite 两种数据提供者;数据库工厂仅运行时只读使用。
- 编解码与词法:自有的对象编解码与 ECMAScript 词法分析,被 GRJS 与 GS2 等上层技术复用。
🧪 结构示例
FactoryBase // 工厂:对应「数据库的一张表」
├─ RecipeMod[] // 配方模型:定义字段结构
│ └─ RecipeField[] // 字段定义(类型 / 默认值 / 校验 / 标签)
├─ RecipeBase[] // 配方数据:对应「一行数据」
│ └─ RecipeMeta // 元数据(metaId, id, 模型, 作者, 日期)
└─ ProductBase[] // 运行时产品:可进对象池复用
本页用于分享开发思路与展示作品,目前未承诺开源或提供下载地址。作者应用技术不含GPL等强制开源协议。