定义分层数据的结构与实际存储数据

时间:2011-09-14 22:38:04

标签: oop design-patterns

我正在尝试开发一个可以处理各种类型响应的调查应用程序,例如布尔值,多项选择,以及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?

如果有更好的方法来解决这个问题,我很想听到它。

谢谢, 李

1 个答案:

答案 0 :(得分:0)

  1. minmax应该存储在Question对象中,甚至存储在QuestionType中 - 具体取决于系统在运行时的灵活程度。
  2. 不同种类的Response会有任意限制吗?数据结构在很大程度上取决于它。您可以硬编码不同的Response类型,也可以在运行时支持它们。第一种方法比一个数量级更简单。