在 android 中在视图模型中扭曲 MVP 演示者?
warp MVP presenter inside viewmodel in android?
mvp presenter 模式的缺点之一是处理 activity 状态或方向变化,而 viewmodel 可以承受方向变化,所以我可以将 presenter 包装在 viewmodel 中并仍然使用 MVP 吗?
当然,您可以让演示者驻留在 ViewModel
中以在配置更改后继续存在,并且与 Activity
或 Fragment
的存在时间相同。
你也可以让你的演示者本身成为 ViewModel
子类,或者甚至使用 MVVM
和视图组件从 ViewModel
观察 LiveData
,以自动安全在这一点上进行生命周期处理(正如最近 Google 推动的那样)。
其实MVP、MVVM、MVC都只是设计模式。
None 他们本质上解决了特定平台强加的问题。
它们旨在为开发人员提供一种机制,以便在责任分离原则下将代码结构组织成逻辑角色(参见SOLID software engineering)。
与 Android 活动(旋转只是其中之一)中的配置更改相关的状态保存问题作为 Android 操作系统的一个功能存在。
Google 为其架构组件内置了一个解决方案,我认为您指的是 ViewModel
但这并不意味着 MVVM 作为一种模式直接支持它。
如@zsmb13 所述,您可以相当干净地使用视图模型作为演示者。
mvp presenter 模式的缺点之一是处理 activity 状态或方向变化,而 viewmodel 可以承受方向变化,所以我可以将 presenter 包装在 viewmodel 中并仍然使用 MVP 吗?
当然,您可以让演示者驻留在 ViewModel
中以在配置更改后继续存在,并且与 Activity
或 Fragment
的存在时间相同。
你也可以让你的演示者本身成为 ViewModel
子类,或者甚至使用 MVVM
和视图组件从 ViewModel
观察 LiveData
,以自动安全在这一点上进行生命周期处理(正如最近 Google 推动的那样)。
其实MVP、MVVM、MVC都只是设计模式。 None 他们本质上解决了特定平台强加的问题。 它们旨在为开发人员提供一种机制,以便在责任分离原则下将代码结构组织成逻辑角色(参见SOLID software engineering)。
与 Android 活动(旋转只是其中之一)中的配置更改相关的状态保存问题作为 Android 操作系统的一个功能存在。
Google 为其架构组件内置了一个解决方案,我认为您指的是 ViewModel
但这并不意味着 MVVM 作为一种模式直接支持它。
如@zsmb13 所述,您可以相当干净地使用视图模型作为演示者。