我正在考慮開發一個MCQ評分系統。將有三種模式,簡單,中等和難度。任何新的模式可能會在稍後介紹。標記每個正確的答案取決於模式。每種模式都會有自己的標識系統實現。會有一些獎勵標記系統,比如說一次三個正確的答案,獎勵標記將被添加到總分中。中間和硬模式會產生負面的標記系統。所以這是我的基本結構。幫助開發一個MCQ評分系統開發
我將在android應用程序中使用這個系統。我對設計模式感到困惑,哪一個是完美的。
所以,如果我得到任何代碼示例或結構,它會很好。
在此先感謝。
我正在考慮開發一個MCQ評分系統。將有三種模式,簡單,中等和難度。任何新的模式可能會在稍後介紹。標記每個正確的答案取決於模式。每種模式都會有自己的標識系統實現。會有一些獎勵標記系統,比如說一次三個正確的答案,獎勵標記將被添加到總分中。中間和硬模式會產生負面的標記系統。所以這是我的基本結構。幫助開發一個MCQ評分系統開發
我將在android應用程序中使用這個系統。我對設計模式感到困惑,哪一個是完美的。
所以,如果我得到任何代碼示例或結構,它會很好。
在此先感謝。
嗯,這個問題似乎有多個方面;我會回答你的第一個和主要的:
每當我聽到「他們會有X,稍後加入更多」的話,我的想法立即轉向戰略模式(GoF,谷歌...易於找到一些UML),它主要定義一個算法的接口。
在這種情況下,您將實現此接口的3個實例,稍後定義和添加另一個算法將不會有問題 - 它只會使用相同的接口。
我想象的方法看起來像這樣:public int markPaper(DataStructure mcq)
,如果這有助於你的任何方式。
編輯:哦,並檢查「單選擇多選」Schwartzbach & Frandsen - 這是在谷歌 - 最公平的MCQ標記,以及我一直在過去一年遭受的最新方式; )
編輯2:好的,這樣做更清楚一點;在你的主控流程中,你可能有一個'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() {...
等。希望這可以幫助。
我很困惑與戰略和複合模式。儘管我確實解決了這個問題與討厭,如果其他人。我的一個朋友建議我以責任鏈的方式來做,儘管我認爲它是毫無意義的。 – rokonoid
@rokonoid編輯闡述策略模式 – Kris
謝謝,現在好了。 – rokonoid