我正在尝试开发一个可以处理各种类型响应的调查应用程序,例如布尔值,多项选择,以及1-5,1-10,1-100,-2到+2的范围,甚至十进制值。所以,我创建了一个Response类型的层次结构:
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表怎么样(我需要改进命名约定,一旦我弄明白了!)保持得分并参考带有最小和最大设置的咖喱IntegerResponse?
如果有更好的方法来解决这个问题,我很想听到它。
谢谢, 李
答案 0 :(得分:0)
min
和max
应该存储在Question
对象中,甚至存储在QuestionType
中 - 具体取决于系统在运行时的灵活程度。Response
会有任意限制吗?数据结构在很大程度上取决于它。您可以硬编码不同的Response
类型,也可以在运行时支持它们。第一种方法比一个数量级更简单。