写一段时间的代码,就应该回过头来反思一般,记录自己觉得写好的地方,发现自己写的不好的地方,静下来思考怎样将之写的更好或者去借鉴模仿大神们的大神通,然后融汇贯通,使之成为自己的知识体系。上面这点算是最近的一点感悟吧。
通过几个项目,一直想做的一件事就是项目中的网络请求这块的封装。虽然AFNetworking已经对网络层进行了一层封装,但是作为应用的更上层调用应该可以更简单,结构更清晰。通过网络上的推荐,我找到了猿题库的YTKNetwork和casa大神的CTNetworking这两个第三方网络库,都可以以很小的代价,替换底层用的第三方网络库,而不用通篇去替换请求方法。
下面就是我阅读casa大神CTNetworking这个库源码的一些整理吧,通过整理来了解这个库结构,逻辑。
CTNetworking
CTNetworking的文件结构分为了四个大类文件夹,如下图:
Categories文件夹:放一些写的辅助分类
Components文件夹:放核心功能的组件
Generators文件夹:对象生产工厂,封装了各种需要对象的创建
Services文件夹:用来配置网络配置基类
一、Categories文件夹
这个文件夹放了一些分类,主要是对一些字符串,字典,数组进行一些特定的处理。里面有7个分类,如下图:
下面就来看看这些分类提供了什么功能,图下图:
Components文件夹(核心):
这块就是对网络请求的上层的封装的东西,仔细一看其实东西很少,分了6个类,他们各司其职,他们的功能如下:
Generators文件夹:
这个文件夹的类,主要就是对象工厂,生产所需要的对象,结构如下图:
Services文件夹
这个文件中是配置网络配置的基类,提供了网络配置各种信息,结构如下图:
总结
以上就是对CTNetworking的结构的分析,对这个库有更深入的了解,下一步就是具体的代码实现的解析了,后面会分享代码解析分享。
参考文章: