Наследование для класса домена в Grails или флаг подойдет?
Я делаю веб-сайт, где врачи и пациенты могут войти.
class Doctors {
String firstName
String lastName
String email
String password
String hospitalName
String NPINumber
}
А пациенты
class Patients{
String firstName
String lastName
String email
String password
}
Поскольку очевидно, что существует множество перекрывающихся полей, которые используются только для целей аутентификации / входа в систему, мне было интересно, является ли наследование хорошей идеей или я должен просто создать флаг в одном классе.
Итак, два варианта:
ОПЦИЯ 1
class Users{
String firstName
String lastName
String email
String password
}
class Doctors extends Users {
String hospitalName
String NPINumber
}
class Patients extends Users{
}
ВАРИАНТ-2
class Users{
String firstName
String lastName
String email
String password
boolean isDoctor
String NPINumber
String hospitalName
}
Я не уверен, какой из этих проектов я должен выбрать, чтобы он мог быть расширен в будущем!
1 ответ
Вариант 1 - больше ОО точно. Тем не менее, я все же внесу небольшие изменения, чтобы сделать дизайн еще лучше. Вместо расширения User, почему бы не иметь свойство User, которое содержит некоторые общие атрибуты. Расширение класса User может сделать ваш дизайн более сложным. Может быть, эта тема может помочь вам.
Также, как совет, не используйте имена классов во множественном числе. Представьте, что это сущность для себя, а не совокупность сущностей. Ясно, что ваш класс Доктор, например, представляет одного доктора конкретно. Не более одного. Таким образом, вы должны использовать доктор, пациент и пользователь. Надеюсь, поможет.