Android 三方SDK封装的个人感悟

Android 三方SDK封装的个人感悟

最近公司新招Android开发,面试的时候总会聊到三方SDK的封装的问题,在这里说一下自己的理解。
三方SDK,一般拿过来是直接可以使用的,最近来面试的人大多数人在谈到这个问题,都是直接拿过来使用的,少部分人是直接在网上搜别人封装好的拿过来用的,极少有人自己封装!
我个人认为,在使用第三方的SDK是必须封装的。
1,封装可以提升我们的编码效率:比如我们使用三方图片加载的SDK,我们封装后只需要把URL和ImageView传到我们封装好的方法里面就好了!这样既简单又快捷,我们也容易记住!而用别人的SDK,我们首先得学习,可是学会之后很容易忘,又得再次去学习,我们封装的话,只需要学习一遍就好了,大大节省了我们的学习时间,从而提升我们的编码效率。
2,出错率低:封装之后,代码量将减少很多,逻辑更加清晰,就保证了出错率低!即使出错我们也能更快的去定位!
3,代码维护成本低:这个我个人认为是封装的意义根本,我们封装三方SDK之后,在我们业务上出现变化而需要改这部分业务时,我们只需要在封装的类里面改就好了,不用在整个项目里面搜索,大大降低了我们的维护成本。
当然,封装还有很多的优点,我这里只说到了一小部分!每个人也有每个人的理解,欢迎大家来吐槽。
我再说一下我封装时候注意的点
1,可以使用单例的,尽量使用单例模式,从而减少资源的消耗;
2,测试使用的封装类,在正式上线记得关掉;
3,网络请求框架的封装,尽量使用线程池来管理;
4,封装的方法参数很重要,我主要说一下这块。

封装的方法参数很重要
我们传参的方式,直接决定着我们封装的类的成败!
比如,我们封装我们的网络请求方式。我们用OkHttp举例
我们首先封装一个post请求方式的方法,而我们的用Form表单的形式来提交我们的参数。

 public void newPost (final String url, final FormBody formBody, final JsonProcessor processor){
   executorService.submit(new Runnable() {
            @Override
            public void run() {
              try {
               OkHttpClient client = new OkHttpClient();
                    client.newBuilder().connectTimeout(10, TimeUnit.SECONDS);
                    client.newBuilder().readTimeout(10, TimeUnit.SECONDS);
                    client.newBuilder().writeTimeout(10, TimeUnit.SECONDS);
                      Request request = new Request.Builder()
                            .url(url)
                            .post(formBody)
                            .build();
		    Response response = null;
                    response = client.newCall(request).execute();
 		    if (response.isSuccessful()) {
                        processor.onSuccess(response);
                    } else {
                        processor.onFailure(response);
                    }
              }catch (IOException e) {
                    Response response = null;
                    processor.onFailure(response);
                    e.printStackTrace();
                }
            }
  });
}

看了上面的代码好多同学都说没问题啊,这样封装和好用啊,我们只要传过来URL,FormBody ,和请求监听就好了!
可是我想说的第一个问题,就是想问问这个自定义的监听,你用它的意义何在!自己封装的好用吗?而这个监听第一个好处就是直接处理了数据结构,统一的数据结构用起来更简单,快捷,容错率高;第二就是,如果我们不用OkHttp了,或者OKHTTP不更新了,我们需要更换其他的网络请求框架,这时我们只需要换这个封装类内部的东西就好了,不用整个项目中去找的改!
可是,这个时候你有没有发现,上面的代码中还传了FormBody,如果不用OkHttp了,FormBody这个类就不存在了,我们要更换网络请求框架还是要整个项目中去找着改,有累还容易出错!
而这里我们把FormBody 换成 Map,这个问题就解决了!

我们封装的时候,需要考虑第一是灵活,第二是简单易用,第三是效率,第四是可维护性,第五是容错率。考虑到了这些,大家可以封装适合自己的类。我们编程最重要的是全局考虑的一种思维!
以上仅是个人观点,如有您不认同之处,欢迎指出!

这里只说了三方SDK的封装!UI封装,控件封装大家有兴趣也可以研究一下!

发布了14 篇原创文章 · 获赞 9 · 访问量 1104

猜你喜欢

转载自blog.csdn.net/qinchun_long/article/details/100741342