﻿# 12. 纸上设计
由于 QFramework 支持 MVC、分层 和 CQRS，再加上提供了使用规范，那么 QFramework 就可以达到高度的标准化，达到高度的标准化那么就有了做一件事情的条件，就是纸上设计。

假如我们想实现一个主角吃金币，金币数量增加的功能，则可以按照如下顺序设计图。


首先需要确定数据结构。

我们可以用类图来确定，也可以用更简单的方式绘制。

![image.png](https://file.liangxiegame.com/fb76cf87-9758-4289-8b6b-29621beba7c4.png)



然后，我们需要确定表现层如何显示金币。

![image.png](https://file.liangxiegame.com/6f4dcfce-75a6-4e5d-bfc0-edc5f2e20f16.png)

接着，我们要开始设计 Command。

![image.png](https://file.liangxiegame.com/ed1b486b-4ea7-45e1-8af2-6c238952c83e.png)

然后，可以把如何触发，和如何更新的图都画好。

![image.png](https://file.liangxiegame.com/504fc46e-351a-4b56-874e-bbb9d2879642.png)

这样一个吃金币的功能思路就设计好了。

当然吃金币这个例子很简单。

不过笔者建议，如果 QFramework 架构用得不是很熟悉的时候，就用这种小功能来做一些纸上设计比较合适。

而当 QFramework 架构用得很熟的时候，可以在纸上设计一些更复杂的功能。

比如技能系统、强化道具系统、背包系统、任务系统等等。


我们看一下第一篇中的一张图。

![](https://file.liangxiegame.com/6bf42306-0b2a-4417-bbcf-354af0132596.png)

这张图，其实就是一张纸上设计图，即 当主角打死敌人后 触发分数变更、触发成就达成 的功能。

这种图加上吃金币图，是 QFramework 纸上设计中的 功能图。


除了功能图 ，还有 QFrameowrk 纸上设计的 架构图。

架构图的示例如下所示：

![image.png](https://file.liangxiegame.com/c1584a3b-f8be-49a1-897a-9f1b684864bf.png)


架构图只是罗列了每个模块都在哪个层级，并没有展示具体如何交互。

而功能则是展示了一个功能具体的逻辑控制流向。

在一般情况下，架构图 和 功能图 都不是必须的。

功能图在早期更多是帮助 QFramework 不熟悉的人梳理思路用的。

但是也有开发人员不在电脑旁的时候，而此时项目也比较紧，这个时候 纸上设计 就会排上用场了。

开发人员完全可以纸上把整个项目的功能思路都实现出来。

还有一种用法就是，开发人员拿到需求之后，集合全部开发人员开一次会议，在会议中边研读策划文档边和大家一起用纸上设计把整个项目的功能思路都实现出来，然后再把编码和具体实现的工作量分配给每个人，这也是一种用法。

总之 纸上设计 是非常有用的一个方法。

可能有人会问，纸上设计需要遵循什么格式吗？

答案是没有的。

如果习惯用 UML 类图，那就用 UML 类图绘制，如果习惯用方块、圆圈、棱角那就用方块、圆圈、棱角，如果习惯用纸笔，那就用纸笔。

总之怎么快怎么方便就怎么用。


纸上设计 除了方便功能实现，也方便在团队内沟通，比如一位开发人员如果对实现一个功能没有思路，那么就可以问主程或者 QFramework 高手，让高手用一张纸来梳理思路，这样开发人员拿到这张纸就可以去实现了。还可以每次让开发人员先在纸上设计好，然后把这张纸拿给主程或者 QFramework 高手，主程或 QFramework 高手验证完才可以进行编码实现，这样用也是可以的。

好了关于纸上设计的入门和一些拓展用法就介绍到这里。


## 更多内容

*   转载请注明地址：[liangxiegame.com](https://liangxiegame.com) （首发） 微信公众号：凉鞋的笔记
*   QFramework 主页：[qframework.cn](https://qframework.cn)
*   QFramework 交流群: 623597263
*   QFramework Github 地址: [https://github.com/liangxiegame/qframework](https://github.com/liangxiegame/qframework)
*   QFramework Gitee 地址：[https://gitee.com/liangxiegame/QFramework](https://gitee.com/liangxiegame/QFramework)
*   GamePix 独立游戏学院 & Unity 进阶小班地址：[https://www.gamepixedu.com/](https://www.gamepixedu.com/)






