Вопрос

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

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

Мы должны внедрить форму редактирования номеров telepone.В первом приближении предлагается добавить какую-нибудь страницу, которая будет доступна для навигации, например 'Номер телефона / T0001'.

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Я бы сделал так, чтобы телефонный номер просто содержал кучу цифр (возможно, сделал бы его множественным), и ссылался бы на него таким образом:Контактный /C0001/ Номер (ы) телефона

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top