Здравствуйте. Хочу разобраться с архитектурными паттернами MVC, MVP, и понять с какой архитектурой я имею дело, если точнее — понять какую именно архитектуру я создаю. Сразу оговорюсь создается desktop приложение.
Про MVC.
Поверхностно с MVC знаком довольно давно. Сейчас стал разбираться и понял, что один момент в архитектуре паттерна меня категорически не устраивает: Представление имеет ссылку на Модель. Моя задача изначально поставлена так, что на модель придется 2 и более представления.
1) Получается, что Представления потянут всю или почти всю иерархию модели. Модель, нужно сказать, спроектирована в лучших традициях ООП. Т.е. когда я буду иметь модель (одну или более) и 6 представлений, то из-за такой простой операции как переименование класса в модели, мне придется вносить изменения, перекомпилировать представления?
2) Представим что, Представление, форма напичканная элементами управления, или ее полностью заменяемый, более наглядный, аналог – рисуемые на холсте диаграммы, настолько удачно подобранны и настолько хорошо спроектированы, что могут использоваться как кнопка. Могут подходить к разным моделям ситуациям и т.д. Паттерн фактически обязывает привязать эту «кнопку» к конкретной модели. Возникает вопрос – кому нужна такая «кнопка»?
Про MVP.
С описанной выше точки зрения на эти паттерны, я быстро понял – то, что я создаю не MVC. У меня был интерфейс представления, с неким простым набором операций, отвязанный от какой-либо модели. Так же у Представления есть интерфейс контроллера (презентер), необходимый представлению для работы. Таким образом, контроллер не зависит от конкретного представления, представление не зависит от конкретного контроллера. Связность минимальна. Контроллер (Презентер), знает об интерфейсе Представления и знает о модели. Модель не знает вообще ничего.
Что я имею. Я имею три почти несвязных компоненты: Модель, Презентер, Представление. Связанность тут: конкретный презентер зависит от модели. Все взаимодействие Модель – Представление происходит через Презентер. Является ли то, что я построил MVP?