需要帮助开发MCQ评分系统开发

时间:2011-08-21 06:53:47

标签: java android design-patterns

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

我将在Android应用程序中使用此系统。我对一个完美的设计模式感到困惑。

所以,如果我得到任何代码示例或结构,它会很好。

先谢谢。

1 个答案:

答案 0 :(得分:2)

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

每当我听到“其中会有X,稍后会添加更多”这些词语时,我的想法立即转向策略模式(GoF,谷歌......很容易找到一些UML),主要定义算法的接口。

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

我想方法看起来像public int markPaper(DataStructure mcq),如果这对你有任何帮助。

编辑:哦,并查看Schwartzbach& amp;&amp ;;的“多选的单一选择”。弗兰德森 - 它在谷歌上 - 做公平的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 () {...

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