04-模型转为流程
模型转为流程:把模型展开成一步步可执行的步骤
正向建模得到模型,逆向应用用模型解构事物。但「用模型解决问题」在真实工程里还有一个必经环节:模型本身还不是步骤——要把模型转成流程(步骤序列),才能一步步去解析事物或解决问题。这一条线讲:模型怎么被展开成流程(依赖 → 拓扑排序 → 实现步骤),步骤的单位是什么(可验证的步骤),以及步骤的三种顺序(架构/实现/验证)怎么区分。
一、模型不是步骤
模型是「对一类事物的压缩描述」,它不是「一步步怎么做」:
1 | 模型(循环):重复执行某个过程 |
正向建模回答「事物由什么构成」,逆向应用回答「用模型怎么识别事物」,模型转为流程回答「按什么步骤把模型落地」。 前两者解决「理解」,后者解决「执行」。
二、为什么需要把模型转成流程
模型给出了结构,但执行需要顺序:
1 | 模型:Vector2 → Entity → Component → Registry → System(结构) |
结构是空间的(谁属于谁、谁依赖谁),流程是时间的(先做什么、后做什么)。同一个结构可以有不同的执行顺序——所以必须显式地做一次「结构 → 顺序」的转换。
模型转流程 = 把空间结构展开成时间顺序。 结构回答「是什么关系」,流程回答「按什么顺序做」。
三、转换的核心:依赖 → 拓扑排序 → 实现步骤
把结构转成顺序,靠的不是凭空排,而是依赖关系:
1 | Vector2 → Entity → Component → Registry → System → Movement → Collision → Render → Game |
后面的东西依赖前面的东西,所以得到实现顺序。但真正的工程步骤不能只有「先后」——一个模块「写完」不代表它真的可用,还要验证:
| Step | 工作项 | 前置依赖 | 验证 |
|---|---|---|---|
| 1 | Vector2 | 无 | 加减乘正常 |
| 2 | Entity | 无 | 能创建/销毁 |
| 3 | Component | Entity | 能挂载 |
| 4 | Registry | Entity+Component | 增删查正常 |
| 5 | System | Registry | 能遍历实体 |
| 6 | Movement | System+Transform | 方块能移动 |
| 7 | Collision | Movement | 不穿透 |
| 8 | Render | Transform | 能显示 |
| 9 | Game | 全部 | 能运行 |
于是它不只是「先做 A 再做 B」,而变成:A 完成并通过验证 → 才允许进入 B。
1 | 模型(结构) |
四、步骤的单位:可验证的步骤
不要写「实现 ECS」——这个太大,做完不知道算不算完成。真正的步骤应该长这样:
1 | 动作 → 产生结果 → 验证结果 → 解锁下一步 |
1 | 创建 Entity |
一个好步骤的标准:
做完这一步,应该能明确知道「产生了什么结果」,并且知道「怎么判断它完成了」。
「实现碰撞系统」不合格——拆成动作级步骤:
1 | 创建 CollisionSystem.h |
五、步骤的三种顺序:架构 / 实现 / 验证
「合法顺序」不一定是「最佳顺序」。有三种顺序,不能混:
A. 架构顺序:谁依赖谁
1 | Registry → System |
回答「结构上谁必须先于谁」。
B. 实现顺序:先写谁
1 | Entity → Component → Registry → System |
由依赖关系和拓扑排序决定。回答「从 0 到 1 先做哪个」。
C. 验证顺序:先让什么跑起来
1 | 窗口 → 方块 → 方块移动 → 两个方块 → 碰撞 → 玩家 → 敌人 → 关卡 |
每一步都让系统「更完整,而且可以运行」(Incremental / Vertical Slice)。
开发顺序 vs 运行顺序
1 | 开发顺序:Entity → Component → Registry → Movement → Collision → Render |
六、完整链条:模型展开成步骤
1 | 模型(对事物的压缩描述) |
三个阶段层层细化:
1 | 设计层 「我要有一个 MovementSystem」 |
七、这个转换在「解析事物」时同样成立
「模型转流程」不只在实现软件时用——解析/拆解一个已有事物也是一样:
1 | 用模型解析一个程序(逆向): |
「分步骤去解析事物或解决问题」就是把模型展开成步骤序列,每一步可验证,验证通过才进入下一步。 解析和实现是同一个动作的两种方向:实现是把模型展开成构建步骤,解析是把模型展开成验证步骤。
八、和其他线的关系
1 | 本线 ←→ 正向建模(01) |
收束
1 | 模型不是步骤:结构(空间)≠ 流程(时间) |
模型给出结构,流程给出顺序。 把模型转成一步步可验证的步骤,才能去解析事物或解决问题——这是从「理解」到「执行」的必经转换。
