ITOO之精妙设计(一)——大道至简
来源:互联网 发布:c语言windows代码 编辑:程序博客网 时间:2024/04/30 04:26
一张精妙的工作流的设计图(如下图),唤起了我对考试系统中使用组件的方式来完成对所有试题信息的抽象的回味。
图一:工作流
或许这张工作流的图在网络上的任何一个角落里也找不到吧!将整个工作流抽成一个空壳框架,这个空格框架是由三个控制流程组成,真正的工作流程与具体的业务颗粒的组成是在真正启动某一个流程的时候才组合的,f(id,角色),函数中的id隐含了流程的启动者,角色表示处理者,例如审批流程中的辅导员,或者是书记等。将复杂的业务与工作流之间的结合以一张简单的抽象图展现出来形象了许多吧……
回归到考试系统对各种题型的设计。起初的需求如下:实现无纸化考试,用机考替换掉任何一个学院的任何一门课程的纸质试卷(如下图)。将所有课程的试卷存放在一起,你需要一个题库,究进该设计一个怎样的表才能存下所有的试题呢??
图二:纸质试卷
设计过程:
第一版:一门课程一种题型一张表。因此数据库中有很多张题库表。表结构基本相同,每张表都是对一门课程下的一种的题型的具体描述。PS:这种表只能是初级人员设计出来为了完成每一种题型的基本存储而已,谈不上是对所有题型的抽象……
第二版:
……
现在版:经过了很多版的演化后,我们现在的题库就只有一张表了。但问题是,一张表如何能够涵盖那么多种试题呢?单选题,多选题,判断题,填空题,填图题,简答题,名词解释,画图题,听力题,完形填空,大题中涵盖小题,每种小题的呈现样式又不一样……
解决方案总是会比问题多的。综观所有的试题,我们总是能够抽象出很多共同的信息的,将所有的试题认为是由一个一个的组件构成的:单选组件、多选组件、文本框组件、题干组件、音乐组件,OOM图、类图(只有组件部分)如下:
图三:OOM图
图二:试卷抽象类图
总结:
两种设计是在不同的业务中发生的,但是都有一个共同的东西:化繁为简,让人耳目一新!有了最初的设计,如何将这种美好的设计以图形化的界面华丽的展现在用户的面前,敬请期待:ITOO之精妙设计(二)——从设计到图形化的转化
- ITOO之精妙设计(一)——大道至简
- ITOO之精妙设计(二)——从设计到图形化的转化
- 产品与设计——大道至简
- 大道至简——设计模式学习
- ITOO之底层搭建(一)——缺少jar
- 精少则病——大道至简,大道同源
- “十天一本书”之24—《大道至简》感悟
- 《大道至简》——读书笔记2
- Python ——大道至简
- 大道至简—SQLite3 使用教学
- 大道至简_论设计模式
- 大道至简-JQuery的设计思想
- 读大道至简之我见1——团队管理
- 大道至简之编译原理初探
- 大道至简之水银泻地
- Python之道 (大道至简)
- 大道之简摘录
- 【java】itoo项目实战之常见问题一
- Java之&&、||与&、|的区别
- 兼容
- Numpy学习笔记1-基本类型
- 苹果开发 笔记(33)常用组件笔记
- touch事件的派发与传递
- ITOO之精妙设计(一)——大道至简
- json和jsonp的联系和区别(转载)
- 2015百度之星 初赛2 连接的管道 最小生成树
- 一个c++题目引发的思考
- Web前端开发规范手册
- java中runnable和thread的区别
- C语言知识结构
- String拼接的问题
- Docker解析及轻量级PaaS平台演练(四)--Fig相关介绍