时间:2010-07-23 17:00:23

标签: android design-patterns architecture

5 个答案:

答案 0 :(得分:16)

恕我直言,Android“希望”遵循MVC模式,但查看&控制器通常真的耦合在一起。

它使单位测试更难,并且很难服从Single Responsibility Principle

我发现a really nice Android architecture presented here,可能有一个想法。一切都松散耦合,更容易测试和编辑。

显然,我确信还有很多其他的可能性(比如MVP模式(Model View Presenter) - 和here are answers talking about MVP in Android),但你仍然应该看看它。

答案 1 :(得分:16)

我现在已经在Android上工作了9个月,从服务器端背景来看,完整的单元测试和分层架构很常见并且运行良好。

通过大量的试验和错误,我强烈建议使用Model View Presenter模式,而不是模型视图控制器。

我发现的一个重大问题是,Activities / Fragments的生命周期超出了您的控制范围,可能导致意外问题。

例如,我们的主要Android应用程序希望在平板电脑上以横向模式使用。我们在OnCreateView()OnCreate()

中执行此操作

在Nexus 7上,默认视图是肖像,所以会发生的是它以纵向模式启动活动,然后我们的代码说到横向和android最终会创建activity类3次!

我们已将网络请求连接到onCreate,在这种情况下,它们最终会发生3次。

当然,我们可以添加逻辑来查找重复调用,但在我看来,在架构上尝试将UI与业务逻辑分开会更好。

我的建议是使用工厂模式从活动创建演示者,但要确保工厂只返回相同的实例。然后,演示者可以包含执行网络请求的逻辑,查找重复项并返回缓存结果和一般业务逻辑。

当来自网络呼叫的结果返回时,要么发布到诸如Otto之类的总线,该活动(在onResume()上注册事件并在onPause()期间注销)已注册,或确保回调活动实现的界面已更新为演示者中的最后一个活动。

这样,presenter向下的代码是可单元测试的,不依赖于片状UI层测试。

答案 2 :(得分:15)

答案 3 :(得分:7)

MVP 是大多数人关注的最新架构 Here is the small documentation正如 Bob叔叔干净的架构所说,“架构是关于意图,而不是框架”

Watch this video这只是令人兴奋的事情。

答案 4 :(得分:2)

以下是Android Architecture blueprints的专用项目,其中包含详细记录的源代码。所有这些都基于MVP模式,有几个曲折。还要根据代码行,可测试性,学习成本以及对增加数据复杂性的支持来检查各种解决方案的comparison。这取决于特别开发的应用程序和上下文(上市时间,开发人员,未来计划等)哪个蓝图最适合。