java - 开发 MCQ 评分系统开发所需的帮助

标签 java android design-patterns

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

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

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

提前致谢。

最佳答案

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

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

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

我把这个方法想象成这样:public int markPaper(DataStructure mcq),如果这对你有任何帮助的话。

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

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

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 () {...

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

关于java - 开发 MCQ 评分系统开发所需的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136866/

相关文章:

java - Java中模拟类分类的方法

java - BeanIO 将带注释的类写入固定长度

design-patterns - 什么是 LMAX Disruptor 设计模式?

ios - iOS 中的设计模式作为装饰器模式

php - 如何在 Android 中 Facebook 登录后将 Facebook 详细信息插入数据库

android - 如何在 Android 手机上测试 Android 应用程序并获取错误日志?

Android webview 适合所有内容到屏幕

c# - 我应该将所有方法标记为虚拟吗?

java - 如何使用 apache poi 和 java 对象填充 Excel 行

java - 程序运行时向 JComboBox 添加项目