在android中的viewmodel中扭曲MVP演示者?

时间:2018-07-02 15:27:22

标签: android mvvm kotlin mvp

mvp演示者模式的缺点之一是处理活动状态或方向更改,而视图模型可以保留方向更改,因此我可以将演示者包装在视图模型中并且仍然使用MVP吗?

2 个答案:

答案 0 :(得分:1)

当然,您可以让演示者住在ViewModel中,以抵抗配置更改,并且与ActivityFragment的生存时间相同。

您还可以使演示者本身成为ViewModel的子类,甚至可以将MVVM与视图组件一起使用,并从LiveData观察ViewModel,以确保生命周期内的安全在那时进行处理(如Google最近推动的那样)。

答案 1 :(得分:1)

实际上,MVP MVVM和MVC都只是设计模式。 它们都无法固有地解决特定平台所带来的问题。 它们旨在为开发人员提供一种机制,以根据职责分离原则将代码的结构组织为逻辑角色(请参见SOLID software engineering)。

与Android活动中的配置更改相关的状态保存问题(旋转只是其中之一)是Android操作系统的功能。 Google为其架构组件内置了一个解决方案,我假设您将其称为ViewModel,但这并不意味着MVVM作为一种模式可以直接支持它。

如@ zsmb13所述,您可以相当干净地将viewmodel用作演示者。

就状态保存而言,我这里有另一种方法:ucs Framework,还有一篇关于此处一种方法的小文章:A Simple MVP approach for Android-现在不赞成使用简单MVP方法,而建议采用以下方法: ucs框架,除了保留状态外,还管理线程。