Сущности и объекты-значения в веб-приложениях - PullRequest
1 голос
/ 16 сентября 2008

У нас есть простая модель домена: Contact, TelephoneNumber и ContactRepository. Контакт является сущностью, у него есть поле идентификации. TelephoneNumber - типичный объект значения: не имеет идентификатора и не может быть загружен отдельно от экземпляра Contact.

С другой стороны у нас есть веб-приложение для управления контактами. 1-ая страница - «ContactList», следующая страница - «Contact / C0001», которая показывает контактные данные и список телефонных номеров.

Мы должны реализовать форму редактирования телефонных номеров. Первое приближение заключается в добавлении некоторой страницы, которая будет отображаться как «ThelephoneNumber / T0001».

Но ThelephoneNumber - это класс объекта-значения, и его экземпляр не может быть идентифицирован таким образом.

Какова наилучшая практика для решения этой проблемы? Как мы можем идентифицировать неидентифицируемые объекты в приложениях без сохранения состояния?

Ответы [ 4 ]

2 голосов
/ 16 сентября 2008

Идентифицирует ли состояние объектов значения этот конкретный экземпляр? Если нет, вы можете просто вернуть старое значение и новое значение при отправке формы редактирования, а затем обновить все объекты со старым состоянием до нового состояния.

Я бы предпочел иметь страницу типа Contact / C0001 / ThelephoneNumber и использовать как идентификатор контакта, так и класс объектов значений для определения экземпляра, который вы хотите изменить.

Если я полностью не понял, о чем вы спрашиваете.

0 голосов
/ 16 сентября 2008

Несмотря на то, что многие люди хотели бы, чтобы вы верили, вы не можете быть на 100% чистыми.

Вашим ценным объектам нужно какое-то поле Identity. Иногда это будет что-то уникальное для объекта, такого как номер телефона, иногда это должно быть что-то искусственное, например TelephoneNumber.Id.

Чем раньше вы это примете, тем лучше для вас: -)

0 голосов
/ 16 сентября 2008

На практике мне всегда легче присвоить номер телефона, даже если это не является строго необходимым с точки зрения дизайна.

Если это объект строгого значения, который не может существовать вне контекста Контакта, это означает, что хороший пользовательский интерфейс может потребовать, чтобы номер телефона был отредактирован на странице контакта, а не на его собственной странице.

Однако я думаю, что решение Марка Гира будет хорошим, если вы решите против любого из этих двух подходов.

0 голосов
/ 16 сентября 2008

Я бы сделал так, чтобы «Телефонный номер» содержал несколько цифр (может быть, во множественном числе), и использовал бы его следующим образом: Контакт / С0001 / «Телефонный номер (и)»

...