Android MVP 依赖规则

Android MVP Dependency Rules

我已经在 Android 中阅读并测试了很多关于 MVP 模式的内容,但我来这里是想征求你的意见,如果我想同时尊重 "Dependency Rule"和 MVP 模式。

怎么解释成很多文章(看这个link:http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/),我们的应用必须分层,只有一个外层可以实例化和使用一个内层。内层接收所有参数(变量、上下文、视图等)和return 响应或使用回调等

通过使用接口和调用接口而不是直接 classes,尽可能多地隔离层也是一个好习惯。 (参见 link: http://www.tinmegali.com/en/model-view-presenter-mvp-in-android-part-2/)。 在上面的link中,作者指定他不使用回调方法,而是使用接口从内层移动到外层(不遵守依赖规则)。

我的问题有两个:

1)调用class都用接口比较好(外层指的是class调用的接口)和被调用的class(内层是指class调用的接口),或者只需要一个方向,比如只外层class指的是内层接口?

2)因为外层(UI)创建了所有内层,并通过简单的屏幕旋转被销毁并重新创建,是否更好(为了内存泄漏)保存状态(当需要时),销毁内部classes和进程,并重新创建它们,或者以静态方式(通过单例或作为class 扩展应用程序 class 的实例)所有需要 "survive" 旋转屏幕的 classes? 感谢大家!

我认为 MVP 在某种程度上是一种 Tuxedo 开发,这意味着您必须分离所有内容并使用接口来声明不同的方法,然后再实现它们。所以我对你第一个问题的回答是肯定的!

通常遇到这种情况,我认为我是定义层的人,另一个初级开发人员要使用我开发的核心,所以,最好限制他的动作并减少他的动作故障和错误。

关于重新创建,我建议以正确的方式使用 Dagger,这真的可以阻止您重新创建之前仅因为屏幕旋转而生成的对象!您可以将较低层的声明保存在内存中,并在旋转后将它们附加到新视图。

我建议看一下我使用 MVP、Dagger、RxJava 和 Retrofit 开发的这个示例存储库,以更加熟悉最佳实践和新的 Android 开发方法:

http://github.com/mmirhoseini/fyber_mobile_offers

希望对您有所帮助:)