Mv*模式的理解,Mvc,Mvp,Mvvm

参考博客地址:https://github.com/livoras/blog/issues/11

用户输入行为会执行一下应用逻辑,触发一定的业务逻辑对数据变更,用户界面的显示需要同步变更。

View:管理用户界面的层次

Model:Data,应用程序的数据,提供数据操作的接口,执行相应的逻辑

View如何同步model的变更,View和Model之间如何粘合在一起?

Mvc模式

Mv*模式的理解,Mvc,Mvp,Mvvm_第1张图片
mvc.png

Controller:为进行Model和View之间的协作(路由、输入预处理)的应用逻辑。

View得到用户操作,把处理的权利交给controller,controller对来自View数据进行预处理,决定调用哪个model的接口,然后有model执行相关的业务逻辑,model变更之后,通过观察者模式通知view,view接收到model变更的消息后,向model请求最新的数据,然后更新界面(view)

Mvp模式:

Passive View

用户对View的操作,从view交移给Presenter,Presenter会执行相应的应用程序逻辑,并且对model进行相应的操作,model操作后把变更的消息传给Presenter,Presenter得到model变更的消息后,通过View提供的接口更新界面。

Mv*模式的理解,Mvc,Mvp,Mvvm_第2张图片
mvp.png

Mvvm模式:特殊的mvp模式,对mvp模式的改良

Vm:ViewModel,包含的领域模型和视图的状态。可以理解为页面上所显示内容的数据抽象

Mv*模式的理解,Mvc,Mvp,Mvvm_第3张图片
mvvm.png

ViewModel中有一个叫Binder的东西,负责View和Model之间数据同步操作,只需要在View的模板语法中,指令式的声明View显示的内容和Model的哪一块数据绑定的,当ViewModel对进行Model更新的时候,Binder会自动把数据更新到View上去,当用户对View进行操作,Binder也会自动把数据更新到Model上去,这种方式称为two-way data-binding,双向数据绑定。

你可能感兴趣的:(Mv*模式的理解,Mvc,Mvp,Mvvm)