我正在考虑开发一个MCQ评分系统。将有三种模式,简单,中级和困难。任何新的模式都可能在以后引入。每个正确答案的评分取决于模式。每种模式都会有自己的阅卷系统实现。会有一些加分系统,比如一次答对三个正确答案,加分就会加到总分上。中级和硬性模式将有负面评分系统。这就是我的基本结构。
我将在android应用程序中使用此系统。我对哪一种设计模式是完美的感到困惑。
因此,如果我得到它的任何代码样本或结构,那将是很好的。
提前谢谢。
发布于 2011-08-21 15:01:47
嗯,这个问题似乎有多个方面;我将回答你的第一个也是主要的一个:
每当我听到“他们将会有X个,更多将在以后添加”的时候,我的思想立即转向战略模式(GoF,谷歌……为此很容易找到一些UML ),它主要定义了算法的接口。
在这种情况下,您将实现此接口的3个实例,并且稍后定义和添加另一个算法将不成问题--它将使用相同的接口。
我把这个方法想象成这样:public int markPaper(DataStructure mcq)
,如果它对你有任何帮助的话。
编辑:哦,看看Schwartzbach & Frandsen的“多项选择的单一选择”--它在google上--这是做公平MCQ评分的最好方法,也是我在过去一年里一直在忍受的;)
EDIT2:好的,让它更明确一点;在你的主控制流中,你可能有一个'markPaper()‘方法。由于我们希望这是模块化的,我们将采用所有这些功能,将其移动到一个实现评分算法接口的类中。你可能倾向于这样写:
main(){
...
if (difficulty == 1){
[elaborate easy algorithm here...]
else if(...){
[slightly harder algorithm here...]
诸若此类。相反,创建一个辅助方法,比方说mark,并将其传递给算法实例:
private int mark(GradingAlgorithmInterface algorithm, DataStructure paper){
algorithm.markPaper(paper);
}
main(){
...
if(difficulty == 1){
mark(new ConcreteEasyAlgorithm(), paper);
} else if () {...
诸若此类。希望这能有所帮助。
https://stackoverflow.com/questions/7136866
复制相似问题