У меня возникают проблемы при реализации шаблона MVP. Чтобы объяснить это легко:MVP Pattern: Как модель запрашивает представление?
У меня есть WinForm (в View), который реализует интерфейс (его соответствующий IView). У меня также есть ведущий и, наконец, модель.
Но в начале не было ни IView, ни Presenter, ни Model. Был один огромный вид, который сделал все. И поэтому начался рефакторинг ...
Все прошло отлично, почти идеально. Но теперь, я встретил эту ситуацию, и вопрос о дизайне пришел ко мне:
Я нашел, что у представления есть метод, который принимает событие. Этот метод очень велик и имеет много логики. Поэтому я просто поместил весь метод в презентаторе, чтобы освободить представление о логике. Все было хорошо.
Но тогда я хотел освободить докладчика от этой логики и зарядить модель ... потому что эта логика была бизнес-правилами!
Я начал это делать, а затем я понял кое-что: в некоторых местах эта логика просила меня создать экземпляр других WinForms.
На данный момент возникает вопрос: Если ведущий ничего не знает о бизнес-правилах, он не должен знать, когда создавать экземпляр WinForm или нет. Так кто знает? Модель, конечно. Но ...
- Как может модель рассказать кому-нибудь, с каким видом (и когда) до экземпляр?
- Кто должен быть этим «кем-то»?
- Я в порядке, когда я говорю Ведущий не должен знать, когда и какой вид создать? Скажите только реализацию IView, только если кто-то попросит об этом (возможно, модель).
Спасибо всем!
Я не уверен, что это помогает, но я думаю, что вы имеете в виду MVC, где у вас есть MVP. Если это так, то это контроллер, который информирует модель, и является «клеем» между моделью и представлением. Удачи вам в вашем проекте :-) Вот ссылка для получения дополнительной информации: http://www.tomdalling.com/blog/software-design/model-view-controller-explained/ –
Спасибо Джейкоб, но я на самом деле имею в виду MVP , Как я понимаю, модель в MVP включает контроллер и модель MVC. MVP только отделяет представление от модели через презентатор. (то, почему ведущий не должен знать бизнес-правила). Но все равно спасибо! ;) – Nachokhan