【发布时间】:2012-09-05 23:58:17
【问题描述】:
问题:非常大且复杂的 Activity 类。难以阅读/理解和修改。很难测试。
可能的解决方案:Model-View-Presenter(可能使用依赖注入)。 和模拟测试对象!
我计划在我的 Android 应用程序中实现 Model-View-Presenter。 这基本上是模型-视图-控制器的变体。本质上,使 Activity 一个美化的布局管理器,并将任何业务逻辑交给 Presenter。查看 Presenter 的另一种方式是,它就像在 Activity 中实例化的 Helper 类,通过提供 Presenter 可以使用的接口/回调的 Activity 来完成繁重的工作。
我想了解一些社区对此的看法。例如:
这意味着什么接口?
Model 和 View 与 Presenter 相比有什么责任。
对于 Presenter,我想 Activity 会实现 Presenter 所需的接口?
Presenter vs. Activity 应该包含哪些内容?
演示者会与活动一对一吗?如果一个 Activity 有多个显示不同小部件的片段,每个片段都有自己的适配器呢?我们现在需要多个演示者还是仍然只需要一个?
Presenter vs. Adapter 怎么样?
演示者应该如何关联说具有 ListView 和 ListViewAdapter 的 Activity?
Presenter 与 Adapter 的区别是什么?
Presenter 应该选择要使用的适配器吗?还是应该由 Activity 做出这个决定?
Presenter 应该处理模型数据还是适配器?适配器和演示者之间是否存在冲突?适配器是演示者吗?或更少/更多的东西。通常适配器仅适用于 Activity 中的 ListViews 等小部件。我认为他们不会进行获取数据本身的调用。
所以在 model-view-presenter 中,关键是真正决定 Presenter 与其他类中的内容以及 Presenter 与活动、适配器和视图/包括片段之间的通信应该是什么。
Model-View-Presenter 对 Android 来说真的是个坏主意吗?或者它是否适合 Android 框架?
请记住,在 Android 之外还有许多非常成熟的 SDK 示例仍然需要像 MVP 这样的微架构。事实上例子比比皆是:例如。 Flex 是一个非常成熟的 Flash SDK,但它仍然需要用于几乎所有主要应用程序的 MVP 和 MVC 框架。
EJB 需要 Spring 来简化和组织它。 MFC/Struts 等,不胜枚举。为什么Android应该有所不同?在没有像 MVP 这样的设计模式的情况下,我们为什么要假设 SDK 具备 Android 所需的一切?
很高兴在我花费数百小时之前知道,请随时评论/回答此问题的任何部分。
【问题讨论】:
-
有意见吗?赞成?否决票?厘米?答案? ..........
标签: android design-patterns android-layout