在MonoDroid中使用MVP模式

时间:2011-03-06 15:40:44

标签: android user-interface mvp xamarin.android ui-patterns

这是我尝试使用MonoDroid应用程序使用MVP(或更具体的Passive View?):

https://gist.github.com/857356

我的主要目标不是重用,而是提高可测试性并(希望)提高可维护性。重复使用将是一个很好的副作用,但我目前不打算做MonoTouch版本或其他任何东西。

我一般都很满意(有一个例外),但我肯定需要一些批评/评价。

一个例外:方法“GetPortfolioIdForContextMenu”返回一个'int',这感觉不太正确,因为其他方法不必这样做。这只是感觉不对,但我不能完全理解'为什么',或者甚至做些什么。

3 个答案:

答案 0 :(得分:3)

您是否考虑过MVVM模式?我在WPF开发中使用它,虽然我还没有将它用于我的Android项目。我喜欢这个模式,它与MVP非常相似,只是ViewModel不知道View存在。 MVVM通常只适用于支持数据绑定的语言。

一些有用的链接:

  1. Wikipedia MVVM
  2. 您需要Android Binding project背后的motivation。 [主要好处:测试]
  3. Tutorial on MVVM with Android
  4. 希望其中一些有用。

    -jP

    编辑:刚刚意识到您正在使用MonoDroid。这可能没那么有用。也许它对其他网络搜索者有用。

答案 1 :(得分:1)

我看了看。除非您从GetPortfolioIdForContextMenu类中删除MainActivity方法并直接使用该值(因为您可以访问{{},否则我不会看到您如何重新构建它以删除这个小“错误”。 1}}在主类中,您只在一个地方使用_presenter。在这种情况下,演示者仍然保持其角色(检索,保留,格式化)。

有时,在“真实”项目中,您必须违反规则。在这种情况下,我相信即使有这么一点不一致,你也保持了MVP的精神

答案 2 :(得分:1)

onCreateContextMenu包含要为其创建上下文菜单的视图。您可以将组合ID设置为每个视图的标记,然后在onCreateContextMenu中使用它。 HTH!