这里介绍MVP架构,我看了几篇文章,MVP解释的不清晰,上一篇中大佬的文章解析的比较可信
浅谈 MVC、MVP 和 MVVM 架构模式 这篇大佬的文章
1.MVP和MVC的比较
MVP 架构模式是 MVC 的一个变种,MVC 与 MVP 之间的区别其实并不明显。
两者之间最大的区别就是 MVP 中使用 Presenter 对视图和模型进行了解耦,它们彼此都对对方一无所知,沟通都通过 Presenter 进行。
MVP 中的视图必须要将对应的事件代理给 Presenter 执行,MVC中一般都是Controller。
2. 被动视图
MVP有两种常见的模式:Passive View 和 Supervsing Controller。
被动视图(Passive View):顾名思义,在该变种的架构模式中,视图层是被动的,它本身不会改变自己的任何的状态,所有的状态都是通过 Presenter 来间接改变的
- 当视图接收到来自用户的事件时,会将事件转交给 Presenter 进行处理;
- 被动的视图向外界暴露接口,当需要更新视图时 Presenter 通过视图暴露的接口更新视图的内容;
- Presenter 负责对模型进行操作和更新,在需要时取出其中存储的信息;
- 当模型层改变时,可以将改变的信息发送给观察者 Presenter;
在 MVP 的变种被动视图中,模型的操作以及视图的更新都仅通过 Presenter 作为中间人进行。
2. 监督控制器
与被动视图中状态同步都需要显式的操作不同,监督控制器(Supervising Controller)就将部分需要显式同步的操作变成了隐式的:
监督控制器中,视图层接管了一部分视图逻辑,主要内容就是同步简单的视图和模型的状态。
网友评论