我正在嘗試開發一個調查應用程序,它可以處理各種類型的響應,如布爾值,多項選擇以及範圍從1-5,1- 10,1-100,-2到+2,甚至十進制值。所以,我創建響應類型的層次結構:定義分層數據的結構與實際存儲數據
class Response {
String name
}
class BooleanResponse extends Response {
boolean score
}
class SimpleGradeResponse extends Response {
char score // A-F
}
class ComplexGradeResponse extends Response {
char score // A-F
char modifier // +, -, blank
}
class IntegerResponse extends Response {
int min, max, score
}
class DecimalResponse extends Response {
double min, max, score
}
我認爲,作爲元數據。它描述了調查響應類型。你可能會有問題1是從1到10的IntegerResponse,問題2是從0-100的IntegerResponse,問題3是DecimalResponse等。
我不確定的地方是存儲用戶的實際響應的地方。您是否將分數與元數據混合在一起,就像我在上面的分數字段中所做的那樣?這似乎很尷尬,因爲每個範圍類型的響應都帶有最小值和最大值。
我真正想要的(我認爲)是能夠咖喱範圍響應參數來創建一個新類型,然後在實際響應表中反映該類型。因此,一個1-10範圍的問題將成爲IntegerResponse中的一行,min = 1,max = 10。但是,ActualResponse表(我需要改進命名約定,一旦我找到了!)持有一個分數,並用min和max集引用Curried IntegerResponse?
如果有更好的方法來解決這個問題,我很想聽到它。
感謝, 李
聽起來像我這樣的問題是不是Grails或Groovy相關,但更多的領域是在領域建模和麪向對象的設計領域... –