XMNetworking: 通过一个网络库谈谈封装

XMNetworking 是今天微博上看到的 南峰子 他们团队一个同学开源的一个网络框架.
这个框架是基于 AFNetworking 的再次封装, 接口简洁, 使用简单.
这引起了我的一个简单的小思考, 什么才是一个好的封装呢?
这个问题其实是个很个人的问题, 我只能说说我自己的想法.

我认为简单的封装就是把搜有的流程变成 三个步骤, 并且简化这三个步骤

配置->执行->响应

其实任何类库往小了说也就是这三个步骤, 把他们优雅非切开, 就是我对封装的理解.
我们往往希望的就是在一个地方把我需要的配置设置好, 在需要的时候去执行方法, 然后统一的得到结果,处理结果.

希望是美好的,事实是残酷的,我们往往面对的是一堆不知所云的的参数,一些不知什么时候调用的代理,还有一堆各色各样的执行方法,我觉得这个时候,我会想起来曾经听到的一个小笑话, 如何评价一个 java 程序员的好坏呢? 就是看他对 Spring 知道的有多少.... 当然,我不会 java, 就当我瞎说的吧.

那我们结合 XMNetworking 来说一下我对这三个步骤的理解
XMNetworking 一个分为三个大类 XMRequest XMCenter XMEngine, 其实这三个类也就可以简单的映射为我之前说的三个步骤, 当然不得不说 这个库的确是个很简单的类库, 如果稍微复杂一点, 也不能这么简单的分为三块.
XMRequest 对应的就是配置, XMCenter 对应的是调用和响应, XMEngine 对应的具体的执行

XMRequest 看名字我们也都知道,它代表着一个请求, 当我们发起一个请求的时候,只需要设置这个 request 的参数, 然后把它传递给 XMCenter 就大功告成了.
当然, 我希望看到的是清爽配置清单, 而不知数以百计复杂的参数. 这个又要说一个笑话, 就是如何看一个软件是否拥有设计师, 就看它的主页上是否罗列了一大堆参数设置项.
所以, 我认为在对配置进行封装的时候要把常用的参数暴露出来, 把复杂的不经常使用的参数隐藏起来.
那么我们就一定要把所有配置放在一起设置吗, 当然不是, 我们还要根据需求, 把他们再次进行区分, 并且放到合适的地方. 比如说 XMNetworking 就把全局的参数都放到了 XMCenter 中去设置.

XMCenter, 这个是一个壳, 我们通过它, 把参数传进去, 然后再通过它触发回调, 好的封装是我只需要关心壳, 而不需要必须去探寻底层的实现, 如果有一些库要求我们再上一层调用之后还要进入到下层中处理回调, 我相信是没有人愿意使用它的. 而且我想说的是 代理模式, 不得不承认 代理 在一些情景中是十分正确高效的, 但是在处理一些简单的逻辑或者说是流式/链式的逻辑的时候感觉有点复杂, 我更希望使用 callback block 来处理, 而代理呢, 我觉得更适用于处理事件的触发, 比如 tableview.
还有一点值得说的就是 XMCenter 提供的调用接口, 为了用户体验, 它提供了很多简化的接口, 这也是让人很舒服的一点, 并且考虑到使用场景提供了 单例 和 生成对象两种模式. 能够简单的应付大多数问题

XMEngine这个类相对前面的两个类就复杂的多了, 他封装了所有对 AFN 的操作, 这也就是把所有复杂的东西封装起来, 多余的就不说了.

最后还有一点说的就是, 封装难道就是仅仅把原有的方法优雅的重构一遍?当然不是, 我们往往在封装的时候还可以吧我们的一些逻辑和行为进行再次封装, 从而简化我们的操作, TTRequest 提供了两个类 XMChainRequest XMBathRequest, 我希望大家自己去看看源码, 然后自己体会一下.

总结

先说明一点, 肯定没有绝对正确的理论, 尤其是这种很个人的封装方式的讨论.
具体的解决问题的方式还要根据具体的需求来进行判断.
表面上, 让类库变得简单而优雅.
内在呢, 要把结构变得低耦合, 清晰, 可拓展
最后就是在基础功能的基础之上还要加上额外的便利功能.
这就是我对封装的不成熟的个人理解.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容