Closed jane-u closed 9 years ago
Центральный модуль AppContext хранит контекст приложения и отвечает за манипуляцию Presenter`ами. Presenter хранит в себе экземпляры модели и представления, извлекает данные из модели и формирует их для отображения в представлении. Представление отображает данные и маршрутизирует команды пользователя и события для обработки Presenterом. Модель определяет бизнес-логику, данные для пользователя получая их из репозитория данных.
Поскольку данные могут быть получены из различных источников необходимо определить единое место в котором осуществляется доступ к фактическому источнику данных. Для этих целей используется паттерн Repository, выступающий фасадом реальных операций доступа к данным. Модель, через интерфейс получает доступ к конкретной реализации репозитория. По необходимости, например для тестирования, реализация репозитория может быть подменена.
We do not need to replace just data source. We need to replace everything but views. It is not necessary to implement BL and keep data relativity. It will take a lot of time and it will be almost ready application. We just need something to implement quickly to show in controls. This "something" will be managed by application (application context) and work with views while views know nothing about this "something".
репозиторий для работы с данными и его тестовую имплементацию на примере User https://github.com/olga-jane/prizm/tree/D_Kulish - в варианте MVP но для его полной имплементации пришлось бы перестраивать все формы и https://github.com/olga-jane/prizm/tree/D_Kulish_ViewModel - в варианте ViewModel там тоже идет разделение доступа к различным репозиторям но делается это несколько проще.
Devexpress предлагает отличное решение по архитектуре, которое идеально нам подходит как по представлениям так и по биндингам данных паттерн MVPVM который является более современной версией MVP в которой устранена проблема биндинга данных https://documentation.devexpress.com/#WindowsForms/CustomDocument17232 там же и пошаговый пример реализации похожего на наше приложения.
Propose an architect solution for dummy hardcoded data (for UI demo). This solution must take into account Passive View MVP concept (see for reference: http://habrahabr.ru/post/211899/) so view doesn't know who and how use it, view doesn't contain any logic. The concept is supposed to be simpler than Presenter shown in example, and stay separately to switch it off quick. No coding at this time.