今日大事件:Google宣布kotlin成為Android開發的官方語言,之前對這門語言也聽說過但是沒有仔細的學習,從現在開始需要認真的study,我會與大家一起學習這門新的語言。
在談MVP之前我們先了解下MVC模式。
MVC: model、view、controller 是軟件架構中最常見的一種框架,在Android中簡單的說就是xml布局文件就相當于view,Activity、Fragment相當于controller,業務邏輯處理獲取數據相當于model,當controller收到用戶的指令比如輸入、點擊事件就會通知model去更新數據,并返回給view層去展示。
1.view將收到的指令傳送到controller
2.controller完成UI邏輯后(比如顯示一個進度框)會去通知model去完成業務邏輯比如去請求最新的數據
3.model將最新的數據傳送給view,view去做刷新,用戶得到一個反饋
在之前所做的項目里可能都是傳統的MVC模式,我們通常會這樣做在一個Activity或者Fragment中,把獲取數據、綁定適配器、顯示數據、刷新數據全部寫在這一個類中,甚至都寫在onCreate/onCreateView里,比如我們會在網絡請求成功的回調里直接操控View的刷新,在點擊操作里直接去操作Model,各個模塊之間耦合嚴重,分離不開,這樣的結果造成我們的界面里的代碼多則有上千行,看起來非常臃腫,如果遇到一些項目需求改動,增加新功能等簡直讓人發狂,后來有了MVP這種架構后對于這種問題的解決就提供了一個方案,因為他通過一個Prestener來分離了Model與View降低了它們之間的耦合,那么什么是MVP呢?
MVP:model、view、presenter,mvp設計模式是為了解耦代碼以實現重用性和可測試性,它依據職責劃分應用的組件,我們稱之為關注點分離。
MVP將一個應用分為了3個部分
1.Model: 負責應用的數據部分
2.View:負責將數據顯示在視圖上
3.Presenter: 連接view與model的橋梁
MVP 為上述組件規定了一些基礎規則,如下所示:
1.View 的唯一職責就是根據 Presenter 的指示繪制 UI。它在這個程序里應該是“啞”的。
2.View 將所有的用戶交互委派給它的 Presenter。
3.View 永遠不與 Model 直接交互。
4.Presenter 負責接受 View 對 Model 的請求,并且在特定的情況下控制 View。
5.Model 負責從服務器、數據庫和文件系統獲取數據。
后記:
對于MVP的實現方式網上有很多種,我之前的想法是有沒有一個統一的標準,但是我至今也未看到過什么標準,我想這就得實踐出真知,不同的項目不同的實現了吧,對于MVP模式的學習網上有大把的資料,可是有的真的只是蹭下熱度,也有很多的demo,我個人建議還是追尋google的腳步,從官方的例子中去熟悉。
https://github.com/googlesamples/android-architecture
最后在此感謝歐陽鋒老師對我的幫助,他是kotlin的專家,可以在簡書上搜索關注,可以跟著一起學習kotlin哦。
http://www.lxweimin.com/u/db019edd34b4