看andengine准备裁减以下改进一下自己的小游戏,觉得直接抄的话没意思,就想自己参照着写一个。可是参照参照就又变成抄了。印象中andengine有一个BaseGameActivity,所有抄的时候就以它为基础。一点点往下搭的时候,越搭越不爽,因为里面的东西都是相关的,接口加在这里,实现加在那里,另一个地方也有关联,总是要改改这里修修那里,憋屈。感觉流程不对,就翻出一本架构的书来补补。
刚看完了《Software Architecture in Practice》的第一部分就发现了一个问题。
问:架构的目的是什么了br> 答:是为了能够独立开发。
包括一个游戏,要单独的引擎,单独的内容,单独美工,单独的音效等等。再细点就是一个引擎里要有单独的驱动模块、单独的描绘模块、单独的内容管理、单独的控件模块等等。而为了能够单独的开发各个子模块,就必须对整个系统进行分割、设计、然后才是一个个子模块的开发、测试。我憋屈的原因就是因为没有分割、设计这一步,要做一个功能就要垮各个模块,修改一堆文件,搞的是晕的一塌糊涂。看看例子的一层层的分割。。。。
一、架构描述
通常通过视图(View)和结构(Structure)来讨论架构(Architecture)
?视图(View):一系列架构组件的描述
?结构(Structure):架构中的组件
架构通过各组件的性质,大体上可以分为以下三类:
★模块体系(Module Structures):内容为按功能分类后的架构组件。它负责描述组件的功能以及与其它组件的关系。
模块体系包含:
?分解(Decoposition):将模块进行分解,直至小到非常容易理解。子模块通常作为设计和开发的单位。
?应用(Uses):能够将一个系统划分为不同的子集,以适应增量开发。
?层(Layered):通常被设计用来隐藏低一层的实现细节,以带来可移植性。
?类(Class or Generalization):类结构通过抽象和子类化,实现重用和功能的增强。
★运行体系(Component-and-Connector Structures):内容为运行时的架构组件以及与其它组件的交互组件。它负责描述运行时的主组件,公用的数据,处理中的数据流可并行的处理等等。
执行体系包含:
?处理与通信(Process or Communicating processes):描述处理或线程如何与通信处理整合。
?并行(Concurrency):确定系统中的并行,定位可能出现的资源竞合。
?数据共享(Shared data or Repository):适合用来描述针对共享数据的系统。显示在运行系统中数据如何被处理和消耗,能够被用来确保性能和数据完整性。
?客户服务器(Client-server):适合用来描述一组项目交合的客户、服务器系统。
★部署体系(Allocation Structures):内容为开发或运行时的部署。
部署体系包含:
?部署(Deployment):
?执行(Implementatioin):
?任务分配(Work assignment):
二、一个例子(A-7E航空系统)
A-7E架构分为以下三块:
?分解(Decomposition)
?应用(Uses)
?处理(Process)
★分解(Decomposition)
一次分解
?硬件模块(Hardware-Hiding Module)
?行为模块(Behavior-Hiding Module)
?决策模块(Software Decision Module)
二次分解
◆硬件模块(Hardware-Hiding Module)
?扩展电子模块(Extended Computer Module)
?设备接口模块(Device Interface Module)
◆行为模块(Behavior-Hiding Module)
?功能驱动模块(Function Driving Module)
?共享服务模块(Shared Services Module)
◆决策模块(Software Decision Module)
?数据类型模块(Application Data Type Module)
?数据仓库模块(Data Banker Module)
?行为过滤模块(Filter Behavior Module)
?物理模型模块(Physical Models Module)
?软件工具模块(Software Utility Module)
?System Generation Module)
三次分解
太多了
★应用(Uses)
按应用将分解后的自模块进行分类整理。
★处理(Process)
按处理种类将分解后的子模块进行分类
?定时处理(Periodic process)
?Demand process
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!