MVC 、MVVM、MVP

MVP :https://www.jianshu.com/p/ad09e4ff18d8
MVVC 、MVVM、MVP
MVC:

image.png
image.png

现实中的:MVC, M和V经常会直接通信,产生了耦合
数据Model: 负责封装数据、存储和处理数据运算等工作
视图View: 负责数据展示、监听用户触摸等工作
控制器Controller: 负责业务逻辑、事件响应、数据加工等工作

MVVM:


image.png

使用MVVM时有一项关键的技术叫作双向绑定技术。这个技术主要的功能就是在Model变化时,ViewModel会自动更新,而 ViewModel变化时,View也会自动变化。通常可以使用KVO和Notification来实现这项技术,不过目前有一项比它们更适合这项工作的框架叫作ReactiveCoco

MVVM最基本的规则:

1.View持有ViewModel 反之不持有
2.ViewModel持有Model 反之不持有
3、View 和ViewModel之间有双向数据绑定关系。

viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码的地方
viewController 只是一个中间人,接收 view 的事件、调用 viewModel 的方法、响应 viewModel 的变化。
viewModel 绝对不能包含视图 view(UIKit.h),不然就跟 view 产生了耦合,不方便复用和测试。

ViewModel包含view中所有的接口和属性,并且使用ViewModel中的属性进行绑定。这样,view和ViewModel之间形成了双向数据绑定,这样的话,view中的变化可以直接在ViewModel中体现,而ViewModel的变化也可以直接在view中显示。

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然

MVP :
MVC和MVP的区别就是,在MVP中M和V没有直接通信。

image.png

1、View 不再负责同步的逻辑,而是由 Presenter 负责。Presenter 中既有业务逻辑也有同步逻辑。
2、View 需要提供操作界面的接口给 Presenter 进行调用。(关键)
缺点:
1、Presenter 中除了业务逻辑以外,还有大量的 View->Model,Model->View 的手动同步逻辑,造成 Presenter 比较笨重,维护起来会比较困难。

MVVM模式关键点:
01.用户和View交互。
02.View和ViewModel是多zhuan对一关系。意味着shu一个ViewModel只映射多个View。
03.View持有ViewModel的引用,但是ViewModel没有任何View的信息。
04.View 和ViewModel之间有双向数据绑定关系。
MVP模式关键点:
01.用户和View交互。
02.View和Presenter是一对一关系。意味着一个Presenter只映射一个View。
03.View持有Presenter的引用(译者注:应该是通过接口交互,并不直接引用Presenter),但是View不持有Model的引用(译者注:即使接口,也不会)。
04.在View和Presenter之间可以双向交互。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容