Present:中间层负责UI改变及时更新数据;数据的改变及时的更新UI
单独的看图可能太抽象了项目地址:Demo
项目总体框架:
项目框架如图实现的主要思想是业务逻辑与试图层的分离;
UI改变时对应的数据的更新:
代理协议view层改变num
代理协议响应响应的p层数据改变
代理协议实现P层数据改变时对应的UI的更新
p层数据改变
数据大于5的时候UI试图层的更新
UI试图层的更新到了这里基本上实现了MVP的面向协议式的编程思想,没有很难的理解的地方;简单说一下mvp优缺点:
优点:
1. 任务均摊 -- 我们将最主要的任务划分到 Presenter 和 Model,而 View 的功能较少;
2.可测试性 -- 非常好,由于一个功能简单的 View 层,所以测试大多数业务逻辑也变得简单;
3.易用性 -- 代码量比 MVC 模式的大,但同时 MVP 的概念却非常清晰。
4.模型与视图完全分离,我们可以修改视图而不影响模型;
5.可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部;
6.我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁;
7.如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。
缺点:
视图和Presenter的交互会过于频繁,使得他们的联系过于紧密。也就是说,一旦视图变更了,presenter也要变更。
本文纯属个人见解:希望这篇文章对您有帮助。当然如果您发现有可以优化的地方,希望您能批评指正。
最后要谢谢此文章的作者:iOS mvc到mvp
网友评论