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封裝,控件封裝大家有興趣也可以研究一下!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章