【问题标题】:Help needed to develop a MCQ scoring system development开发 MCQ 评分系统开发所需的帮助
【发布时间】:2011-08-21 15:27:58
【问题描述】:

我正在考虑开发一个 MCQ 评分系统。将有三种模式,简单,中级和困难。以后可能会引入任何新模式。每个正确答案的标记取决于模式。每种模式都有自己的标记系统实现。将有一些奖励评分系统,例如一次正确回答三个问题,奖励分数将被添加到总分中。中级和困难模式将有负标记系统。这就是我的基本结构。

我将在一个安卓应用程序中使用这个系统。我对哪种设计模式是完美的感到困惑。

所以如果我得到任何代码示例或结构,那就太好了。

提前致谢。

【问题讨论】:

    标签: java android design-patterns


    【解决方案1】:

    嗯,这个问题似乎有多个方面;我会回答你的第一个和主要的:

    每当我听到“将会有 X 个,以后再添加”这句话时,我的想法立即转向了策略模式(GoF、google... 很容易找到一些 UML),它主要定义了算法的接口。

    在这种情况下,您将实现此接口的 3 个实例,以后定义和添加另一个算法不会有问题 - 它只会使用相同的接口。

    我认为该方法类似于:public int markPaper(DataStructure mcq),如果这对您有任何帮助的话。

    编辑:哦,看看 Schwartzbach 和 Frandsen 的“多项选择的单一选择” - 它在谷歌上 - 进行公平 MCQ 标记的最巧妙方法,也是我在过去一年中一直在遭受的痛苦; )

    EDIT2:好的,让这更明确一点;在您的主控制流程中,您可能有一个“markPaper()”方法。由于我们希望它是模块化的,我们将采用所有这些功能,将其移动到实现分级算法接口的类中。你可能倾向于这样写:

    main(){
        ...
        if (difficulty == 1){
            [elaborate easy algorithm here...]
        else if(...){
            [slightly harder algorithm here...]
    

    等等。相反,创建一个辅助方法,比如标记,然后将其传递给该算法的一个实例:

    private int mark(GradingAlgorithmInterface algorithm, DataStructure paper){
        algorithm.markPaper(paper);
    }
    
    main(){
        ...
        if(difficulty == 1){
            mark(new ConcreteEasyAlgorithm(), paper);
        } else if () {...
    

    等等。希望这会有所帮助。

    【讨论】:

    • 我对策略和复合模式感到困惑。尽管我确实用令人讨厌的 if then else 解决了这个问题。我的一个朋友建议我用责任链来做,虽然我认为这毫无意义。
    • @rokonoid 已编辑以详细说明策略模式
    猜你喜欢
    • 2011-07-23
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多