LuckyWinty / fe-weekly-questions

A pro to record some interview questions every week...
MIT License
342 stars 34 forks source link

说说对MVC,MVVC,MVVM模式的理解 #68

Open LuckyWinty opened 4 years ago

LuckyWinty commented 4 years ago

MVC(Model-View-Controller)

Model(模型):数据层,负责存储数据。 View(视图):展现层,用户所看到的页面 Controller(控制器):协调层,负责协调Model和View,根据用户在View上的动作在Model上作出对应的更改,同时将更改的信息返回到View上。

三者之间的关系 Controller可以直接访问Model,也可以直接控制View,但是Model和View不能相互通信,相当于COntroller就是介于这两者之间的协调者。

MVVM(Model-View-ViewModel)

Model(模型):数据层,负责存储数据。 View(控制器):就是ViewController层,他的任务就是从ViewModel层获取数据,然后显示。 ViewModel(视图模型):就是View和Model层的粘合剂,封装业务逻辑处理,封装网络处理,封装数据缓存。就是把原来ViewController层的业务逻辑和页面逻辑等剥离出来放到ViewModel层。

MVVC(Model-View-View-Controller)

Model(模型):数据层,负责存储数据。 View(视图):展现层,创建需求创建cell View(视图):定义数组,用来接收控制中的数据。处理回调(比如:刷新回调、点击cell回调、加载更多回调、动态视图高度回调等等) Controller(控制器):加载网络数据懒加载

LaamGinghong commented 4 years ago

从字面理解上,非常难看出 MVC 和 MVVM 的区别,因为感觉 Controller 和 ViewModel 做的工作都是一样的,都是做视图和数据之间的处理