Где реализовать интерфейс INotifyPropertyChanged в программной архитектуре? - PullRequest
2 голосов
/ 12 сентября 2011

В настоящий момент я создаю проект, достаточно большой, на мой взгляд, для тщательного разделения хорошо известных слоев его архитектуры.

Для уровня доступа к данным (DAL) я просто использую .NET Entity Framework.

Для бизнес-уровня я определил бизнес-объекты, которые затем будут доступны последующим разработчикам, которые смогут использовать их для создания клиентов и обработки пользовательского интерфейса.

Поскольку я должен был разработать клиентское приложение также для демонстрационных целей, я понял, что может быть очень полезно иметь ObservableCollection<T> вместо списка, и что как можно чаще объекты следует реализовать интерфейс INotifyPropertyChanged, чтобы пользовательский интерфейс автоматически обнаруживал изменения и сразу отображал обновления.

Тем не менее, мне интересно, действительно ли это правильно с архитектурной точки зрения. То есть технически , я не думаю, что бизнес-уровень должен иметь какое-либо отношение к отображению пользовательского интерфейса, так как мы на самом деле не «знаем», для чего программист может его использовать; он может просто захотеть использовать объекты в вычислительных целях, например. Следовательно, мне было интересно, что было обычной практикой?

Должен ли я реализовать эти функции на бизнес-уровне (не будет проблем с производительностью)? Должен ли я создать какой-то объект «декоратор» в другом слое, который включает в себя все эти функции?

1 Ответ

1 голос
/ 12 сентября 2011

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

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

Например, вам может понадобиться модель вида, использующая модель вида модели .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...