小短文,也谈iOS项目架构

层级结构,自底向上

 

持久层(File,Realm,SQLite)<==>网络层(相信每个公司都有自己的网络层吧)==>业务层(ViewModel)==>展示层(View,VC)

 

持久层

 

耦合到网络层

 

设计要点

 持久模型的选择,我这里选择了文件,直接缓存了JSON.txt。并且维护一张表映射到文件,实现快速获取,文件超时删除等操作。

 

持久层的timeout设置,网络层访问到这里的时候,如果超时立即抛弃缓存。

 

 

 

网络层

 

耦合到持久层

 

设计要点

 

 网络层的设计是基于离散式的,即一个API接口对于一个Class。实现接口复用,有了为同一个公司的多个APP提供APIKit的可能。

 网络层的设计是基于数据流的。也就是说,你订阅了这个接口,以后这个接口出现刷新,加载数据等,所有的返回及时发送给所有订阅者。

 一份请求数据,可以多处订阅。例如在首页加载了N个接口,在详情页获取其中某个接口的返回数据,这里你不需要知道那个接口是否加载完成,直接订阅即可。

 接口实例是可reload,可refresh,可nexPage得,具体基于业务实现。

 是有缓存开关的。

 是可adaptation的。这里可要求过来接收数据的类型实现JSONConvertable协议。

 是可以统一catch一些errors的。

 

业务层

 

业务层耦合网络层

 

设计要点

 

这里的业务层就抽象成一个若干个ViewModel。

ViewModel维护各种数据流,状态。部分数据是要提供给展示层的。

展示层和业务层相互订阅。

 

展示层

 

展示层和业务层耦合

 

设计要点

 

 View单纯的包含View。哈哈这里递归了。View也提供事件流,以供和业务层进行绑定。例如这里的view里有一个button,点击button提交数据。这个数据肯定在ViewModel里了。所有,view提供一个buttonClick的信号,ViewModel提供的UploadData的操作。两者绑定即可。

 ViewController,主要在这里进行业务层ViewModel和视图View的绑定,解绑。

由于上传附件及文字限制,有时部分图片、文字可能显示不了,详情请见:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000610&idx=2&sn=925fe75ece0fbe6c6bf0de8c0aae52f4#rd
欢迎大家一起交流。
扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)
 
关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!
也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事!

转载于:https://my.oschina.net/uniguy/blog/681484

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值