Использование шаблона MVP с MonoDroid - PullRequest
1 голос
/ 06 марта 2011

Вот моя попытка использования MVP (или, более конкретно, Пассивного просмотра?) С приложением MonoDroid:

https://gist.github.com/857356

Моя главная цель не повторное использование, а скорее повышение тестируемости и(надеюсь) улучшенная ремонтопригодность.Повторное использование было бы хорошим побочным эффектом, но в настоящее время я не планирую делать версию MonoTouch или что-то в этом роде.

Я в целом довольно доволен этим (за одним исключением), но мне определенно нужна некоторая критика/evaluation.

Единственное исключение: метод «GetPortfolioIdForContextMenu» возвращает значение «int», что не совсем правильно, поскольку остальные методы не должны этого делать.Это просто неправильно, но я не могу понять, почему, или что с этим делать.

Ответы [ 3 ]

3 голосов
/ 16 марта 2011

Рассматривали ли вы схему MVVM? Я использую его при разработке WPF, хотя я еще не использовал его с моими проектами Android. Мне нравится шаблон, он очень похож на MVP, за исключением того, что ViewModel не знает, что представление существует. MVVM обычно возможен только с языками, которые поддерживают привязку данных.

Некоторые полезные ссылки:

  1. Википедия MVVM
  2. Вам понадобится проект Android Binding мотивация . [основное преимущество: тестирование]
  3. Учебник по MVVM с Android .

Надеюсь, что это поможет.

-JP

Редактировать : Просто понял, что вы используете MonoDroid. Это может быть не так полезно. Может быть, это будет полезно для других интернет-искателей.

1 голос
/ 16 марта 2011

onCreateContextMenu содержит представление, для которого необходимо создать контекстное меню. Вы можете установить идентификатор портфеля в качестве тега для каждого представления, а затем использовать его в onCreateContextMenu. HTH!

1 голос
/ 15 марта 2011

Я посмотрел. Я не понимаю, как вы могли бы реструктурировать его, чтобы убрать эту небольшую «ошибочность», если только вы не удалите метод GetPortfolioIdForContextMenu из класса MainActivity и не поработаете со значением напрямую (поскольку у вас есть доступ к _presenter в главном класс и вы используете GetPortfolioIdForContextMenu только в одном месте). В этом случае докладчик по-прежнему сохраняет свою роль (извлечение, сохранение, форматирование).

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

...