Я создаю приложение, для которого требуется несколько подклассов (Person) с похожими свойствами (например, Student, Teacher, Contact, User).Там будет значительное совпадение свойств, но также много различий.Например, Человек может быть Студентом, Контактом и Пользователем.Вот пример (ограниченный для ясности):
Person
FirstName
LastName
DOB
CurrentAge
Student <- Person
StudentId
Average
Email
Phone
Contact <- Person
Email
Phone
Address
User <- Person
Email
UserName
DOB
CurrentAge
Я бы хотел избежать многократного написания кода - например: код проверки электронной почты, код, необходимый для вычисления возраста, и т. Д. Кроме того, у нас, вероятно, будетдобавить дополнительные классы позже с аналогичным перекрытием и отличиями.
Что считается хорошим дизайном для того, чтобы справиться с этим, или какие шаблоны дизайна, если таковые имеются, покрывают это?
Из моего базового понимания шаблонов дизайна Decorator не кажется правильным b /c Я не добавляю поведение.Композит не кажется правильным, потому что он не является рекурсивным.Я также понимаю, что не может быть идеального шаблона для этого, однако это кажется очень распространенным требованием.
Если это имеет значение, это будет в основном использоваться в ASP.NET/C#/VB.NET.
На другие вопросы SO есть ответы для двух похожих классов / объектов (обычно это подклассы), но я не смог найти ничего для произвольного числа похожих классов.приветствуется.