我正在考虑开发一个MCQ评分系统。将有三种模式,简单,中间和硬。以后可能会引入任何新模式。标记每个正确的答案取决于模式。每种模式都有自己的标记系统实现。会有一些奖励标记系统,比如一次三个正确的答案,奖励标记将被添加到总分。中间和硬模式将有负面标记系统。这就是我的基本结构。
我将在Android应用程序中使用此系统。我对一个完美的设计模式感到困惑。
所以,如果我得到任何代码示例或结构,它会很好。
先谢谢。
答案 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 () {...
等等。希望这会有所帮助。