试题扩展类设计
为什么会做这件事情?
1,很多时候,我们自己是无法预测后面可能面临的问题。既然是自己遇见了这样的问题,理应把它解决好。
2,随着需求的增加,代码量也在增加,如果是面向过程型的编码,一般来说,每一次添加需求,都会增加 if else来解决问题,也会修改原来的代码,这样会引入Bug。
3,而自己也要在原有的基础上扩展不同的题型。十分不好扩展。
扫描二维码关注公众号,回复:
1743944 查看本文章
问题分析
1,先整理好已有的实体。
2,发现原作者把试题想象成一个整体。并没有发现试题间的不同。
3,抓关键:题型。单选,多选,判断,简答,复合。(抓变化)
4,思考,不同题型有不同的特征。单选和多选以及判断有选项,而简答题没有选项,复合题是,单选,多选,判断,简答这四类题型组合起来的。(找特征)。所以,不同的题型有不同的组装方式,也有自己独自的保存方法。
解决问题
1,先画好类,把属性和方法放到适合它的类中去。如下就是类图设计。
2,独立出来的QuestionFactory来管理具体的题型实例。
成果
1,以后扩展试题的时候,只需要继承AbstractQuestion,然后重写自己的封装方法,重写自己的保存方法。
2,不修改原来的代码,不会引入Bug。只添加代码。