MVP工程架构入门 swift版本
2017-07-24 本文已影响95人
遇见猫的大鱼
MVP架构的入门初学篇:
MVC搞的越来越难做写测试,是时候换一个啦!学习一下MVP的基础概念,做了一个入门的Demo
总的来说:
1,MVP (数据层和UI层完全隔离)
2,M数据层(数据库网络文件等与数据相关的数据层)---(不是model)
3,V UIView以及子类+ UIViewConreoller以及子类只是创建UI和刷新数据
4,P中介(用于关联M和V )
v和p交互解决方案代理(定义交互协议)
p层关联M层和V层,持有M层对象的引用和V层对象的引用
接下来用展示一些小Demo,类似一个登陆的功能
1,首先创建Model层,实现一个登录的方法login,这一层用于处理数据,但是数据的来源要封装处理,便于拓展:

2,V层实现一个代理,用于P层数据回调给V层

3,实现Presenter层
(1) 持有M和V

(2)实例化

(3)实现一个login方法,调用M层的login方法,这个方法用来给V层调用

(4) 实现V和P的绑定和解绑方法

(5)整体代码,这里在使用
//从m层的的回调,回调到v层去,同样还是通过一个代理实现
self.loginViewDelegate?.onLoginResult(result: result)
这里的self.loginViewDelegate应该是需要校验的,因为可能为空

4,View层的简单使用

5,到这里小Demo就结束了,感觉每一个View层都要创建协议?好坑爹,从入门到放弃,哈哈哈!但是每一层都分离出来确实好测试很多,单元测试的话