前景提要
先说结论
MVP 本质: 是广义上的架构模式 ,适用于面向实体或虚拟用户接口的开发。 它主要是在 MVC 的背景下,通过 依赖倒置 ,来解决 逻辑复用 难、 实现更替 难 的问题。
MVVM 本质: 是狭义上的架构模式,专用于页面开发 。 它主要是在多人协作的软件工程的背景下,通过只操作 ViewModel 中映射的视图数据 来刷新视图状态,以此来解决 视图调用的一致性问题 从而规避不可预期的错误。
所以二者的区别是什么?
区别就在于:
一个是广义上的架构 : 你可以通过同一套逻辑去驱动不同品牌设备的实体用户接口(比如不同品牌的耳机线控),或虚拟用户接口(比如 Android 视图,但存在一致性问题而不推荐);
一个是狭义上的架构 : 专用于可视化页面的开发,通过解决一致性问题 来规避不可预期的错误。
所以轻易地你就可发现,二者分别适用于 在各自的专场下 解决不同的问题,根本没有可比性,更没有所谓的 谁“好”谁“坏” 之分。
而且除了没有可比性,二者之间其实也没任何关系,MVP 的特质是 依赖倒置 ,MVVM 的特质是 数据驱动 ,二者没有说谁演化自谁的关系。回到刚刚所说的:“根本就是 特定场景下解决特定问题 的两种截然不同的架构模式”。 没有所谓的 MVVM == MVP + DataBinding,正如没有所谓的 雷峰塔 == 雷锋 + 塔。
完整原文:
https://juejin.im/post/5f03ef91f265da22df3ccc5a
版权声明
本文以 CC 署名-非商业性使用-禁止演绎 4.0 国际协议 发行。
Copyright © 2019-present KunMinX