Я пытаюсь разработать приложение для опроса, которое может работать с различными типами ответов, такими как логический, множественный выбор, а также в диапазоне от 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, который представляет собой IntegerResponse от 1 до 10, вопрос 2, который представляет собой IntegerResponse от 0 до 100, вопрос 3, который представляет собой DecimalResponse и т. Д.
Где я не уверен, где хранить фактические ответы отпользователи.Вы смешиваете оценки с метаданными, как я сделал с полем оценки выше?Это кажется неудобным, так как каждый ответ типа диапазона несет в себе минимальное и максимальное значения.
Что я действительно хочу (я думаю), так это иметь возможность каррировать параметры ответа диапазона для создания нового типа, а затемотразить этот тип в таблице фактических ответов.Итак, вопрос, который занимает диапазон 1-10, будет строкой в IntegerResponse с min = 1 и max = 10.Но как таблица ActualResponse (мне нужно улучшить соглашение об именах, как только я это выясню!) Хранит счет и ссылается на каррированный IntegerResponse с установленными min и max?
Если есть лучший способподойти ко всей этой проблеме, я очень хочу это услышать.
Спасибо, Ли