Если таблица student_type
содержит только некоторые идентификаторы и, возможно, некоторый описательный текст, но не более того, как в этом небольшом примере
ID description
1 'Hard worker'
2 'Lazy snob'
, тогда ваш единственныйшанс состоит в том, чтобы использовать идентификаторы в вашем коде, возможно, давая им собственные имена, используя либо enum
, либо некоторый постоянный интерфейс, как вы уже делали.И каждое изменение в `student_type ', которое требует изменения поведения , потребует изменения кода.Выхода нет, потому что единственное место, где поведение формализовано и определено, находится в вашем коде.
ЕСЛИ однако таблица имеет формализованное содержимое, как здесь
ID description min_ max_ min_ max_ fire_ give_
points points grade grade ASAP kudos
1 'Hard worker' 100 200 B A F T
2 'Lazy snob' 0 50 Z Q T F
3 'Medium' 50 100 P C F F
, тогда поведение вашего приложения определяется не идентификатором, асвязанные данные - данные образуют простую систему правил.В этом случае вам не нужны никакие константы в вашем коде, потому что вы будете реализовывать систему правил следующим образом:
StudentType studentType = student.getStudentType();
if( studentType.isGiveKudos() )
doGiveKudos(student);
if( studentType.isFireAsap() )
doFire(student);
// next student...
Это путь, если необходима гибкость.
царапина Теперь я не знаю, сильно ли это отличается от вопроса.