Android Design Pattern Test(1)

最近準(zhǔn)備抽時(shí)間學(xué)習(xí)一下MVP模式的使用,嘗試一些新的東西,在google查了一圈,最終選定了幾篇比較好的文章,做了下從MVC到MVP的實(shí)踐,以下是一些心得與總結(jié)。

MVC

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫(xiě),一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫(xiě)業(yè)務(wù)邏輯。其中M層處理數(shù)據(jù),業(yè)務(wù)邏輯等;V層處理界面的顯示結(jié)果;C層起到橋梁的作用,來(lái)控制V層和M層通信以此來(lái)達(dá)到分離視圖顯示和業(yè)務(wù)邏輯層。


參考博客
簡(jiǎn)單根據(jù)MVC原則實(shí)現(xiàn)了一個(gè)demo,主要功能是輸入手機(jī)號(hào)碼,通過(guò)網(wǎng)絡(luò)查詢歸屬地。界面如下:

Screenshot

主要技術(shù)及排坑:
(1)使用Retrofit2.0 + OkHttp + fastjson實(shí)現(xiàn)網(wǎng)絡(luò)通信
(2)由于Retrofit不支持fastjson,需要自己去寫(xiě)一個(gè)fastjson Converter,主要實(shí)現(xiàn)三個(gè)類(Powered by JinSen):

Custom Converter

然后需要設(shè)置一下retrofit的converter即可。

Set Converter

(3)整個(gè)MVC框架還是比較簡(jiǎn)單的,因?yàn)锳ctivity既是Controller又是View,所以主要的工作在于Model。
在寫(xiě)Retrofit網(wǎng)絡(luò)框架的時(shí)候主要遇到的問(wèn)題在于Url的定義,之前在其他文章里也看過(guò)關(guān)于Url的寫(xiě)法問(wèn)題,但是沒(méi)有注意,所以就被坑了好長(zhǎng)時(shí)間。。。

原文鏈接


是的,Retrofit2.0使用了新的URL定義方式,有三種寫(xiě)法,之前看到過(guò)的時(shí)候還在想居然這么奇葩,然后寫(xiě)的時(shí)候就犯了錯(cuò)誤,一直使用第三種的寫(xiě)法,導(dǎo)致始終報(bào)303 Found的重定向錯(cuò)誤。
推薦:使用第二種寫(xiě)法,不容易出錯(cuò)。
(4)在排查上面錯(cuò)誤的時(shí)候,也拓展了兩個(gè)知識(shí)點(diǎn):

1. Log Request And Response
在Retrofit2.0里取消了Log的功能,據(jù)說(shuō)是因?yàn)橹暗腖og功能不夠可靠,所以去掉了,等之后有穩(wěn)定版本了再加上。
但是OkHttp是具有Log功能的,具體做法如下:

log request and response.jpg

Retrofit使用說(shuō)明
推薦一下這個(gè)網(wǎng)站,上面有很詳細(xì)的Retrofit2.0的時(shí)候方法,同時(shí)推薦一下他們的電子書(shū),雖然有點(diǎn)貴,但是會(huì)不斷更新,這一點(diǎn)還是非常良心的。

2. 使用Charles進(jìn)行手機(jī)數(shù)據(jù)包抓取
通過(guò)打印Log沒(méi)有排查出來(lái)錯(cuò)誤,然后就通過(guò)抓包軟件獲取手機(jī)全部網(wǎng)絡(luò)信息,操作也比較簡(jiǎn)單,設(shè)置一下代理,手機(jī)所有的網(wǎng)絡(luò)通信就全部可以顯示出來(lái)了。

(5)MVC模式是一種比較常規(guī)的Android編程模式,但是很多時(shí)候Activity/Fragment既負(fù)責(zé)頁(yè)面顯示(View)的工作,又負(fù)責(zé)邏輯控制(Controller)的工作,當(dāng)頁(yè)面比較復(fù)雜,整個(gè)Activity/Fragment文件會(huì)非常大,之前的項(xiàng)目里很多文件都超過(guò)了1000行,但很多東西又不容易分出去,這也是我之前一直很煩惱和困惑的地方。

Github地址:https://github.com/zhangke445566/AndroidDesignPatternTest

之后我會(huì)不斷完善這個(gè)項(xiàng)目,探索幾種MVP模式的寫(xiě)法及優(yōu)缺點(diǎn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容