【发布时间】:2011-09-14 22:38:04
【问题描述】:
我正在尝试开发一个可以处理各种类型的响应的调查应用程序,例如布尔值、多项选择,以及从 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 无关,而更多是在领域建模和面向对象设计领域......
标签: oop design-patterns