Использование шаблона MVP с MonoDroid

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

https://gist.github.com/857356

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

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

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

3 ответа

Решение

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

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

Несколько полезных ссылок:

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

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

-JP

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

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

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

Другие вопросы по тегам