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

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

https://gist.github.com/857356

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

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

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


person Matthew Groves    schedule 06.03.2011    source источник
comment
onCreateContextMenu содержит представление, для которого должно быть создано контекстное меню. Вы можете установить идентификатор портфолио в качестве тега для каждого представления, а затем использовать его в onCreateContextMenu. ХТХ!   -  person Karan    schedule 16.03.2011
comment
Каран, ты должен был указать это в ответе, потому что я думаю, что это то, что я должен сделать.   -  person Matthew Groves    schedule 16.03.2011
comment
Я рад, что вы упомянули, что повторное использование было не вашей заботой, а тестированием... Я наткнулся на это в: blog.softwareishardwork.com/2008/02/   -  person Daniel P. Bullington    schedule 31.03.2011


Ответы (3)


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

person Karan    schedule 16.03.2011

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

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

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

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

-JP

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

person JP Richardson    schedule 15.03.2011

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

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

person Please treat your mods well.    schedule 15.03.2011