Использование шаблона MVP с MonoDroid
Вот моя попытка использования MVP (или более конкретно пассивного просмотра?) С приложением MonoDroid:
https://gist.github.com/857356
Моя главная цель не повторное использование, а скорее повышение тестируемости и (надеюсь) улучшение удобства обслуживания. Повторное использование было бы хорошим побочным эффектом, но в настоящее время я не планирую делать версию MonoTouch или что-то еще.
Я вообще очень доволен этим (за одним исключением), но мне определенно нужна некоторая критика / оценка.
Единственное исключение: метод "GetPortfolioIdForContextMenu" возвращает int, что не совсем правильно, поскольку остальные методы не должны этого делать. Это просто кажется неправильным, но я не могу понять, почему, или что с этим делать.
3 ответа
onCreateContextMenu содержит представление, для которого необходимо создать контекстное меню. Вы можете установить идентификатор портфеля в качестве тега для каждого представления, а затем использовать его в onCreateContextMenu. HTH!
Рассматривали ли вы модель MVVM? Я использую его при разработке WPF, хотя я еще не использовал его с моими проектами Android. Мне нравится шаблон, он очень похож на MVP, за исключением того, что ViewModel не знает, что представление существует. MVVM обычно возможен только с языками, которые поддерживают привязку данных.
Несколько полезных ссылок:
- Википедия MVVM
- Вам понадобится проект Android Binding, который стоит за этим. [основное преимущество: тестирование]
- Учебник по MVVM с Android.
Надеюсь, что это поможет.
-JP
Изменить: Просто понял, что вы используете MonoDroid. Это может быть не так полезно. Может быть, это будет полезно для других интернет-искателей.
Я посмотрел. Я не понимаю, как вы могли бы реструктурировать его, чтобы убрать эту маленькую "ошибку", если только вы не удалите GetPortfolioIdForContextMenu
метод из MainActivity
класс и работать со значением напрямую (так как у вас есть доступ к _presenter
в основном классе, и вы используете GetPortfolioIdForContextMenu
только в одном месте). В этом случае докладчик по-прежнему сохраняет свою роль (извлечение, сохранение, форматирование).
Иногда в "реальном" проекте приходится нарушать правила. В этом случае я считаю, что даже при этом небольшом несоответствии вы сохранили дух MVP без изменений.