例如学校期末考试
学生分特优生、重点生、普通生、艺术生等。
学生做的试卷都是统一的。
试卷题目类型分单选、多选、填空、计算、附加题
现在考试完了评分,学校对每类学生的评分规定会有不同,例如
特优生附加题,必须全对,错一个整个附加类题目就0分,全错扣分
重点生必须做,至少对一个,全错扣分
普通生和艺术类做对加分,不做不扣分
等等
....
...
..
.
或者再规定,艺术类的计算题做对一个多加5分 | 计算题可以不做 | 单选题特优生不需要做(做了不加分) .... 
求指点!

解决方案 »

  1.   

    单就你说的这些,不能给你具体的方案。但是可以给你一些思路:学生的类型和评分算法是一一对应的么?
    如果是,那么不同类型的学生继承一个基类或者实现一个算分的接口,每个类实现自己的算分。如果不是。考虑使用策略模式,将算分需要用到的上下文提取出来。如果算法可以抽象成独立步骤,可以考虑使用过滤器模式或者装饰模式。
      

  2.   

    大致想到的:用策略模式来区分考生类型,用装饰模式结合解释器模式来对应每个考生的试卷必做和选做的试卷结构,以及相应的评分规则。真要做起来,要考虑的细节还真不少。
      

  3.   

    感谢回复,受益匪浅
    再看有没其他人回复,晚上结贴
      

  4.   

    一个表是考生的信息 另一张表是考试题  加一个表评分规则。评分的时候取评分规则。
    根据相应的考试题 答案 来计算。
      

  5.   

    上午又想了想,策略模式应该是首选了,难点就是后面的评分规则匹配,我试着画了一下语法图,未果,呵呵。挺挠头的一个问题,还是细节太少了。
      

  6.   

    题外话:"学生分特优生、重点生、普通生、艺术生等。"忒不喜欢这样分类...
      

  7.   


    谢谢关注! 我想具体评分的地方是不是该用装饰模式 “评分规则”的地方有些乱,因为都是不确定的,我自己纠结很久无果,现在都是写死在程序里,太不智能了