Для интерфейса View в дизайне MVP, насколько абстрактными должны быть члены IView? - PullRequest
1 голос
/ 27 мая 2009

Я все еще изучаю MVP. У меня есть IView и ведущий. У меня есть собственный элемент управления List, который я написал для этого приложения. Я хотел бы добавить некоторые элементы, по одному за раз. Должен ли я предоставлять IView.AddItem (Item) или мне следует выставлять свойство IView.MyCustomList?

Это вопрос стиля, или правильный ответ на этот вопрос?

Ответы [ 3 ]

1 голос
/ 01 августа 2012

Лично я верю, что хороший стиль будет сохранять цель шаблона MVP и поддерживать код в чистоте.

Если я правильно понимаю, ваше свойство CustomList будет иметь тип вашего пользовательского элемента управления. Предоставление такого свойства интерфейсом представления заставило бы весь код, работающий с этим интерфейсом (презентатор), зависеть от вашего элемента управления (и ссылаться на него как на зависимость). Это возможно и, вероятно, будет работать достаточно хорошо для ваших требований, но это противоречит схеме проектирования MVP. Возможно, вы захотите разделить реализацию представления и докладчика на разные сборки. Но оба должны ссылаться на ваш контроль. MVP был разработан для разделения специфических взаимодействий пользовательского интерфейса и специфических возможностей управления (которые в большинстве случаев зависят от платформы / поставщика) и для того, чтобы скрыть их от бизнес-логики (докладчик).

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

Я подозреваю, что вам не придется одновременно поддерживать разные технологии пользовательского интерфейса (например, ASP.NET Web Forms, WPF / Silverligth или ASP.NET MVC), но если вам гипотетически придется перенести веб-сайт ASP.NET MVC на WPT-приложение destktop и придерживайтесь шаблона проектирования MVP, тогда вам (в лучшем случае) придется реализовывать интерфейс представления только в каждой технологии пользовательского интерфейса, сохраняя одну и ту же кодовую базу для докладчика, служб и всех элементов бизнес-логики ( На самом деле переход от ASP.NET MVC к настольному компьютеру был бы настоящим приключением, но пример должен подчеркнуть, что презентатор и бизнес-логика не должны быть изменены).


PS. Некоторые фреймворки в Java имеют абстрактные интерфейсы (модели пользовательского интерфейса), представляющие компоненты пользовательского интерфейса, и могут повторно использоваться в различных технологиях пользовательского интерфейса. В таких случаях было бы приемлемо представить компонент пользовательского интерфейса через интерфейс модели пользовательского интерфейса (который он должен реализовывать).

0 голосов
/ 15 июня 2010

Не раскрывая свой CustomList, вы сохраняете больший контроль над тем, КАК элемент следует добавить в ваш CustomList. Использование метода AddItem защитит ваш список от возможных злоупотреблений.

Вы можете выбрать, это зависит от того, какой контроль вы хотите сохранить над списком.

0 голосов
/ 01 июня 2009

Да, это вопрос стиля и того, с чем вам удобнее.

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