试题扩展类设计

试题扩展类设计


为什么会做这件事情?


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


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


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


问题分析


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


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


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


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


解决问题


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


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


成果


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


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








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值