
获得徽章 0
- 第一条沸点是一年前喜欢上了旁边的ui姐姐,但是一个月以后为了忘记她,离开了那座城市,现在在这座城市有一套学区房,通勤五公里,女朋友是老师,她愿意换工作来我公司附近的学校,以后一起上下班。大概这就是人生吧4917
- 近来有不少读者咨询 MVP 和 MVVM 的区别。这里我分享一下自己的理解 :
github.com
简单来说,MVP 是基于适配器模式的实现,它是在 MVC 模式泛滥的背景下,为了遵循 依赖倒置原则 以便能够随时替换 V 和 M 的实现。
也即,本质上它并没有解决代码耦合的问题(从前 UI 逻辑在 视图控制器中写,现在搬到了 Presenter 中写而已),它的存在只是为了 面向接口编程 以实现依赖倒置。抛开 MVC 的背景,就无法谈论 MVP 存在的意义。
MVVM 的本质是数据驱动编程,它从本质上解决了代码耦合、实现了关注点分离:让 ViewModel 作为中间桥梁 去通知数据层处理数据业务,并将结果回调给 UI 层处理 UI 逻辑。
Jetpack MVVM 是在 MVVM 模式的基础上 加入了 软件工程安全 和 用户体验优化 的设计。
例如 Jetpack LifeCycle 能在背后妥善处理 视图控制器生命周期的 Null 安全问题,而 Jetpack ViewModel 能分治视图状态的托管,使得 UI 发生重建时 无需重新向后台请求数据,这大幅节省了开销,让重建时的视图加载较以往 更快和更省电。
综上,MVP 和 MVVM 二者之间没有任何关系。MVP 是对 MVC 的升级,而 MVVM 是现代化软件开发模式的范例。展开评论2