年薪30萬必備開發技能!
第一部分:什麼是MVP?什麼是MVC?
1、什麼是MVP?
M:數據層(資料庫、網路、文件存儲等等...)
V:View和Activity和Fragment以及它們的子類
P:中介->Presenter(作用:將M層數據和UI層進行關聯和交互中介)
2、什麼是MVC?
M:單純Model(Java Bean對象)
V:View以及子類
C:Fragment和Activity以及子類
第二部分:開始進行MVP搭建
內容一:MVP入門?
·第一步:看一個基本案例?->普通代碼實現
·第二步:MVP實現->簡單案例->分層次設計
· 第三步:MVP實現->優化->優化第1步->方法綁定
分析問題:因為當我們的Activity關閉的時候,但是網路請求還正在進行,然而我們希望是不要刷新UI了,因為銷毀了,解除UI層和數據層關聯?
解決方案:方法綁定(綁定、解綁)
attachView->綁定
detachView->解綁
·第四步:MVP實現->優化->優化第2步->抽象
分析問題:現在寫一個功能,你覺沒什麼,但是如果我寫了20個類(寫了100個類),那麼你是不是要綁定(解除綁定)100次?會想死。目的就是為了不需要這麼麻煩,統一管理即可(統一綁定)
解決方案:抽象類(抽象類->抽取)->BasePresenter
·第五步:MVP實現->優化->優化第3步->BaseView解決
分析問題:BasePresenter類型類死了,如果你有很多的模塊,那麼沒發抽象。然而希望動態。
解決方案:通過BaseView解決。成立
·第六步:MVP實現->優化->優化第4步->泛型設計
分析問題:每一次強制類型轉換,想死,一個類還好,100個類,強制類型轉換100次。
解決方案:泛型設計
·第七步:MVP實現->優化->優化第5步->抽象類BaseActivity->具體實現
分析問題:現在有一個Activity你需要綁定,還好,如果我有30個Activity,50個Fragment,怎麼辦?代碼冗餘?
解決方案:抽象類->抽象出綁定和解除綁定
·第八步:MVP實現->優化->優化第6步->BaseActivity中抽象->抽象實現(BasePresneter和BaseView)
分析問題:父類BaseActivity寫死了,還是沒有滿足要求?只能夠用LoginPresenter_6,然而我們的目的是能夠兼容所有的模塊
解決方案:抽象實現(BasePresneter和BaseView)
第二步:MVP進階?
內容二:MVP進階?
·第九步:MVP實現->優化->優化第8步->Fragment登錄功能
分析問題:對Fragment進行操作(Fragment抽象)
解決方案:抽象
·第十步:MVP實現->優化->優化第9步—>Fragment抽象
分析問題:對Fragment進行操作(Fragment抽象)
解決方案:抽象->泛型設計
·第十一步:MVP實現->優化->優化第10步->針對LinearLayout、Button集成MVP
需求:集成->實現登錄功能
·第十二步:MVP實現->優化->優化第11步->抽象為一個類
分析問題:每一個模塊基類都需要綁定和解除綁定,很多代碼冗餘。
解決方案:抽象一下(抽象為一個類)
·第十三步:MVP實現->優化->優化第12步
分析問題:能夠滿足開發要求?針對Activity做一些處理,生命周期中控制(數據緩存、狀態處理)針對Fragment做一些處理,生命周期->MVP框架進行緩存?
Activity、Fragment、View等等...處理是不一樣,然而我們之前的抽象沒發滿足要求
解決方案:針對不同模塊,針對性的處理->代理模式
代理一:
代理->針對的是->MVP綁定和解綁
分析角色劃分?
目標介面:綁定和解除綁定回調介面(MvpCallback)
目標對象:具體實現(ActivityCallbackImpl、FragmentCallbackImpl等等...)->Activity實現->MvpActivity
分析:創建presenter、創建view等等...
代理對象:代理實現(MvpCallbackProxy)
代理二:
代理->針對的是->Activity整體代理->生命周期代理
分析角色劃分?
目標介面:ActivityMvpDelegate
目標對象:ActivityMvpDelegateImpl
代理對象:MvpActivity(Activity)
功能實現:
第一個部分:綁定和解綁->目標對象(生命周期)
第二個部分:實現MVP綁定和解綁->目標對象(MvpActivity)
第三步部分:測試
第四步
想要成為技術大神
往下看


TAG:Android開發中文站 |