《春日记》开发记录【3】
来源:互联网 发布:linux cp -f 编辑:程序博客网 时间:2024/04/28 09:25
自己用Laravel写的小博客和CSDN的博客以后同步更新:
《春日记》开发记录【3】
层次模块化
为了不让代码最后变成大麻花,我们的一个重要工作就是解耦。
对于一个OO语言来说,我们可以用设计模式来解耦。
这里因为项目是比较简单的,所以为了提高效率,我只采用了层次化。
CPP因为不允许互相嵌套头文件,经常到导致互相引用比较困难。
这时层次化就显得更为重要了。
我们将程序的各个功能分割为若干模块,程序架构的每一层由若干个模块构成。
设计时我们对于模块只关心它的接口,即模块提供什么功能。
我自己的设计接口的方式是先想象上层的工作流。
就是当程序运行到上层模块时,我们需要依次让下层干什么。
比如,我们运行到一个场景中,就需要先从持久化模块读取数据,
然后通知绘图程序构建图元,然后再通知窗口绘制刷新。
这个时候我们就知道了持久化模块、绘图模块、窗口模块各自需要提供的功能。
架构模块的时候最好是画出架构图,然后列出各个模块的功能和接口。
这样做可以保证最后编码时我们只考虑当前模块,避免同时考虑太多导致思维混乱。
我的这个项目的架构图如下:
图中,Game向外提供整个游戏的运行接口。Scene类提供一个Scene接口,
所有继承该接口的类都可以被Game调用。不同的Scene提供不同功能,
有初始化Scene有brandScene等等。其下就是三个主要功能模块。
Audio负责读取并且解码音频,提供音频播放功能。
Frame负责创建回收窗口,并且绑定OpenGL上下文,提供鼠标输入功能。
Painter负责调用OpenGL绘制,读取TrueType字体即时构建字符纹理,
对上层提供基础图元Sprite。
Storage负责从加密文件中读取资源,并且负责解码TTF/PNG资源。
而Tween负责处理各种缓动动画。
- 《春日记》开发记录【3】
- 《春日记》开发记录【1】
- 《春日记》开发记录【2】
- 《春日记》开发记录【4】
- 《春日记》开发记录【5】
- 《宇春日记2》正在进行时
- 凉宫春日的退屈3
- 青春与阳光——李宇春日记
- 春日留影
- 夏天春日
- 春日温情
- 春日畅想
- 春日施种
- 春日喜屎
- 轻吻这春日的阳光
- iOS开发记录(3)
- DirectX 3D开发记录
- bf531/3 开发若干记录
- android小问题-------------SimpleCursorAdapter使用时的问题。 java.lang.IllegalArgumentException: column '_id' d
- android nfc
- Spark应用开发如何设定配置生效
- KMP字符串模式匹配详解
- Inheritance and virtual functions
- 《春日记》开发记录【3】
- word2vec中文相似词计算和聚类的使用说明及c语言源码
- redis源码阅读(1)---- 开始
- 单件模式
- 快速傅里叶变换
- java多线程设计模
- struct和typedef struct彻底明白了
- (5) Python 语句和语法 –- 赋值
- arch/arm/lib/crt0.S main主函数