前言

对于程序员来说,很多时候,我们都在造房子,从学会框架或者是学会构建整个项目之后,慢慢的我们就会觉得自己在做的事情是一种重复劳动,很多时候只不过是换个面孔而已。而更快的造房子,造好看的房子可能是进一步你想要做的。
封装
可能是你要学会的第一步,它能帮你学会造出你需要的合适的工具,而这些工具能帮你更快的造出你想要的房子。

封装的定义

我对封装的定义 ———— 将项目中需要多次使用,或者是重复劳动,或者是复杂且难看的代码,打包在一起(抽离出来)作为一个通用的东西来使用

封装可以是对自己写的代码进行封装,也可以是对别人写的工具或者是框架进行封装,都可以。俗话说的好,写代码就是:要不就是将别人的轮子拿来用,要不就自己造轮子给别人用。别人的轮子不够用,就改装成飞机大炮自己用。

封装的意义

1、减少重复代码,让代码看起来整齐好看
2、减少重复开发,让开发速度变快
3...
这里不列举了,说白了向面试官吹牛也可以算是意义吧...

封装的步骤

1、找到需要封装的代码(封装永远不是空想出来的)
可能是你项目本身需要封装,又或是你看别人工具想要封装...

2、列出封装的目标
一开始我建议还是列出来靠谱,因为这样不会让你忘记最终的目标是什么。

3、封装
然后就开始做吧!

4、测试
写出你认为所有的在实际中的测试用例单元测试来测试你的工具

5、优化
对不合理的地方进行优化,对用的不爽的地方进行优化

6、打包
打包发布,到实际的生产中去使用吧

以OkHttp为例进行封装

---如果你不知道okhttp那么你可以去了解一下再往下看。

在实际的项目中如果要发送http请求,那么我喜欢使用okhttp工具来完成这个事情,而实际使用的时候,我们每次请求都需要构建整个请求,显得非常麻烦,每次都需要对请求的参数和返回的参数都进行构建,也很麻烦,所以我觉得有必要封装一下

目标

我只是封装三种类型的请求:
1、get请求
2、post请求 json格式
3、post请求 form格式
请求返回格式都是为json格式

要求:
调用请求方法,输入url地址、请求对象,输出请求返回的对象

封装 + 测试 + 优化

(第一步最关键:先上网找找有没有合适的,别人已经封装过的信息,一方面是看看是否适合自己使用,另一方面,即使不能符合自己,那也可以看看是否能从中找到一些可以值得借鉴的地方)
整个过程我描述一下:
1、先把所有的代码写在了一个类里面
2、然后分离出需要的工具接口
3、然后分离内部需要的方法
4、抽离重复的部分
5、针对传入对象进行泛型优化
6、编写单元测试进行测试
7、编写注释和使用markdown

全部代码:https://github.com/LinkinStars/http-helper

总结

1、这里封装是很个性化的一种封装,这样的封装多数是一种定制化的工具,你自己用会觉得很方便。
2、封装会用到很多技术:泛型、反射...
3、封装需要考虑的点很多:因为作为一个工具,你需要考虑到很多人的使用情况,很多测试都是需要做的。
4、封装的优化很多时候会考虑使用设计模式让整体更加优雅。
5、一开始是封装一些别人写的工具,后面是封装一些自己写的代码,在后面是封装一些框架。
6、越原始的封装,封装到最后依赖的越少,封装最后的包越小,使用起来越来越方便。

这里是对封装的一个举例,封装的工具本身不一定对你适合,你需要封装属于你自己的工具,如果你有好的建议,赶紧砸过来吧。

如何合理封装你的轮子、飞机、大炮(以封装OkHttp为例)的更多相关文章

  1. [ES4封装教程]3.使用 Easy Sysprep v4 封装 Windows 7

    (一)安装与备份系统 1.安装 Windows 7 可能很多人会说,安装Win7谁不会,这也用说?装Win7的确人人都会,但如何安装才是最适合系统封装的,就未必是人人都会了.安装是封装之本,没有好的安 ...

  2. 手把手封装数据层之DButil数据库连接的封装

    最近这段时间一直在用SSM框架做增删改查,突然想把以前还不会用框架的时候,综合百度和各种资料结合API文档抄袭而来的数据层的封装分享给大家.这边先封装一个DButil. 我这个封装就是烂大街的那种,没 ...

  3. JDBC连接数据库方法的封装,以及查询数据方法的封装

    (在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...

  4. [官方教程] [ES4封装教程]2.使用 Easy Sysprep v4 封装 Windows XP

    (一)备份当前操作系统封装的第一步,其实是备份当前安装好的操作系统.避免我们在之后的步骤中出现问题,以至于还要重新安装操作系统,浪费时间精力.系统备份想必大家都会.对于WinXP而言,建议使用Ghos ...

  5. 瞎j8封装第二版之数据层的封装

    看了以前写的代码,对就是下面这个 手把手封装数据层之DataUtil数据库操作的封装 觉得以前写的代码好烂啊!!!,重新理了一下思路,写得更规范和简练,应该效率也会高很多,用了一下下午写的连接池(半废 ...

  6. 试试自行封装AJAX和jQuery中的ajax封装的基本使用

    封装的套路: 1.写一个相对比较完善的用例2.写一个空函数,没有形参,将刚刚的用例直接作为函数的函数体3.根据使用过程中的需求抽象函数 代码记录如下: <script> function ...

  7. 【AngularJS学习笔记】封装一些简单的控件(封装成Html标签)

    bootstrap有强大的指令系统,可以自定义一些属性,基本知识请移步:http://angularjs.cn/A00r  http://www.cnblogs.com/lvdabao/p/33916 ...

  8. Linux组件封装(三)使用面向对象编程封装Thread

    C++11提供了thread,但是过于复杂,我们还是倾向于在项目中编写自己的Thread. Posix Thread的使用这里不再赘述. 重点是这个函数: #include <pthread.h ...

  9. 分享一个Delphi跨平台Http库的封装,一个Delphi跨平台TCP库的封装

    { 单元名:跨平台的TCP客户端库封装 作者:5bug 网站:http://www.5bug.wang } unit uCPTcpClient; interface uses System.Class ...

随机推荐

  1. jqurey.running.min.js运动的字体效果

    参考网址: http://yanshi.sucaihuo.com/jquery/22/2226/demo/ 里面有详细的解释 下面是案例效果demo,其中jquery.running.css与jque ...

  2. STS(Spring Tool Suite)下SSM(Spring+SpringMVC+Mybatis)框架搭建(二)

    继完成controller配置并使用controller实现页面跳转,现连接数据库进行登录. 在SSM框架中,使用Mybatis与数据库连接,因此需要配置关于mybatis的配置. 废话少说直接开始: ...

  3. LeetCode 单链表专题 (一)

    目录 LeetCode 单链表专题 <c++> \([2]\) Add Two Numbers \([92]\) Reverse Linked List II \([86]\) Parti ...

  4. 马昕璐 201771010118《面向对象程序设计(java)》第十五周学习总结

    第一部分:理论知识学习部分 JAR文件:将.class文件压缩打包为.jar文件后,使用ZIP压缩格式,GUI界面程序就可以直接双击图标运行. 既可以包含类文件,也可以包含诸如图像和声音这些其它类型的 ...

  5. pycahrm 安装Vue项目

    首先在pycharm > preference > plugins > vue > 点绿色install 创建一个文件夹 然后cmd里cd到这个文件夹 npm install ...

  6. 30 ArcGIS 许可管理器常见问题(持续更新中……)

    一.[单机版] 1.1.ArcMap 1.2.ArcGIS Pro 错误一 ArcGIS Pro单机许可安装授权,在Configure Authorization界面报“This functional ...

  7. mysql uodate 报错 You can't specify target table '**' for update in FROM clause

    You can't specify target table 'sc' for update in FROM clause 背景:把“sc”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩: 上面 ...

  8. tomcat +jenkios

    来源:https://www.cnblogs.com/edward2013/p/5269465.html 1. 安装JDK JDK下载地址:  http://www.oracle.com/techne ...

  9. JS加密对应的c#解码

      escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,? ...

  10. jenkins:一键回滚站点集群

    最近在学习jenkins过程中整理了大量资料,都收录在<jenkins自动化工具使用教程>,但依然缺少一些具体实现细节. 这篇文章,介绍jenkins做集群回滚时的两个设计方案,让一键回滚 ...