试题扩展类设计

试题扩展类设计


为什么会做这件事情?


1,很多时候,我们自己是无法预测后面可能面临的问题。既然是自己遇见了这样的问题,理应把它解决好。


2,随着需求的增加,代码量也在增加,如果是面向过程型的编码,一般来说,每一次添加需求,都会增加 if  else来解决问题,也会修改原来的代码,这样会引入Bug。


3,而自己也要在原有的基础上扩展不同的题型。十分不好扩展。


扫描二维码关注公众号,回复: 1743944 查看本文章

问题分析


1,先整理好已有的实体。


2,发现原作者把试题想象成一个整体。并没有发现试题间的不同。


3,抓关键:题型。单选,多选,判断,简答,复合。(抓变化)


4,思考,不同题型有不同的特征。单选和多选以及判断有选项,而简答题没有选项,复合题是,单选,多选,判断,简答这四类题型组合起来的。(找特征)。所以,不同的题型有不同的组装方式,也有自己独自的保存方法。


解决问题


1,先画好类,把属性和方法放到适合它的类中去。如下就是类图设计。


2,独立出来的QuestionFactory来管理具体的题型实例。


成果


1,以后扩展试题的时候,只需要继承AbstractQuestion,然后重写自己的封装方法,重写自己的保存方法。


2,不修改原来的代码,不会引入Bug。只添加代码。








猜你喜欢

转载自blog.csdn.net/outsanding/article/details/79283862