ITOO之精妙设计(一)——大道至简

来源:互联网 发布:c语言windows代码 编辑:程序博客网 时间:2024/04/30 04:26

一张精妙的工作流的设计图(如下图),唤起了我对考试系统中使用组件的方式来完成对所有试题信息的抽象的回味。

图一:工作流

或许这张工作流的图在网络上的任何一个角落里也找不到吧!将整个工作流抽成一个空壳框架,这个空格框架是由三个控制流程组成,真正的工作流程与具体的业务颗粒的组成是在真正启动某一个流程的时候才组合的,f(id,角色),函数中的id隐含了流程的启动者,角色表示处理者,例如审批流程中的辅导员,或者是书记等。将复杂的业务与工作流之间的结合以一张简单的抽象图展现出来形象了许多吧……


回归到考试系统对各种题型的设计。起初的需求如下:实现无纸化考试,用机考替换掉任何一个学院的任何一门课程的纸质试卷(如下图)。将所有课程的试卷存放在一起,你需要一个题库,究进该设计一个怎样的表才能存下所有的试题呢??

图二:纸质试卷

设计过程:

第一版:一门课程一种题型一张表。因此数据库中有很多张题库表。表结构基本相同,每张表都是对一门课程下的一种的题型的具体描述。PS:这种表只能是初级人员设计出来为了完成每一种题型的基本存储而已,谈不上是对所有题型的抽象……

第二版:

……

现在版:经过了很多版的演化后,我们现在的题库就只有一张表了。但问题是,一张表如何能够涵盖那么多种试题呢?单选题,多选题,判断题,填空题,填图题,简答题,名词解释,画图题,听力题,完形填空,大题中涵盖小题,每种小题的呈现样式又不一样……

解决方案总是会比问题多的。综观所有的试题,我们总是能够抽象出很多共同的信息的,将所有的试题认为是由一个一个的组件构成的:单选组件、多选组件、文本框组件、题干组件、音乐组件,OOM图、类图(只有组件部分)如下:

图三:OOM图


图二:试卷抽象类图


总结:

两种设计是在不同的业务中发生的,但是都有一个共同的东西:化繁为简,让人耳目一新!有了最初的设计,如何将这种美好的设计以图形化的界面华丽的展现在用户的面前,敬请期待:ITOO之精妙设计(二)——从设计到图形化的转化



0 0