参考博客地址:<u>https://github.com/livoras/blog/issues/11</u>
用户输入行为会执行一下应用逻辑,触发一定的业务逻辑对数据变更,用户界面的显示需要同步变更。
View:管理用户界面的层次
Model:Data,应用程序的数据,提供数据操作的接口,执行相应的逻辑
View如何同步model的变更,View和Model之间如何粘合在一起?
Mvc模式:
mvc.pngController:为进行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提供的接口更新界面。
mvp.pngMvvm模式:特殊的mvp模式,对mvp模式的改良
Vm:ViewModel,包含的领域模型和视图的状态。可以理解为页面上所显示内容的数据抽象
mvvm.pngViewModel中有一个叫Binder的东西,负责View和Model之间数据同步操作,只需要在View的模板语法中,指令式的声明View显示的内容和Model的哪一块数据绑定的,当ViewModel对进行Model更新的时候,Binder会自动把数据更新到View上去,当用户对View进行操作,Binder也会自动把数据更新到Model上去,这种方式称为two-way data-binding,双向数据绑定。
网友评论