Сценарий:
Использование многоуровневого подхода со службами WCF: бизнес-службы возвращают клиенту объекты домена / DTO. Все еще в разработке, поэтому мы можем разорвать контракты.
Объект Person имеет имя и фамилию. Объект-член имеет налоговый номер и дату рождения. Это связано с тем, что в нашем домене только члены получают налоговые номера и даты рождения. При получении данных от службы, использующей эту структуру, ясно, какие атрибуты применимы.
Теперь мы представляем еще одну услугу, которая предназначена для использования человеком - скажем, Сотрудник. при этом объекте персоны требуются дополнительные атрибуты номер налогового файла и дата рождения.
Как лучше поступить?
1) Рассматривать объект Person как универсальный объект Person и включать все атрибуты. Это сопоставляет Человека с человеком реального мира, не обязательно основанным на использовании. Это означает, что услуги, которые возвращают лиц, будут содержать номер налогового файла и дату рождения, даже если они могут не иметь отношения.
2) Дублируйте дополнительные поля в Employee. Это оставляет Person как есть и сохраняет специфические вызовы службы за счет дублирования.
3) Создайте еще один промежуточный объект с именем PersonWithDOBTFN, от которого мы наследуем элемент и сотрудник. Это устраняет дублирование, сохраняет специфичность, но вносит сложности.
Я действительно ищу лучший подход к проектированию этих объектов.