MVP模式入門(結合Rxjava,Retrofit)

本文MVP的sample實現效果:

github地址:https://github.com/xurui1995/MvpSample

 


老規(guī)矩,在說對MVP模式的理解之前還是要再談談MVC模式,了解了MVC的缺點。我們才知道為什么要用MVP。

關于MVC的圖解,我在網上找到了一些圖。如下:

   

 

MVC模式在開發(fā)web或者管理系統(tǒng)中應用很多,我們的View與人交互,人點擊鼠標或者輸入一些東西時,View會發(fā)送相應的指令給Controller,Controller接到指令,再去調用Model的方法去更新數據(大多是對數據的增刪改查),Model處理完,View刷新顯示

 

MVC模式的缺點:

1:在android中,如果我們要用mvc模式,那么每層代表什么呢?

你可能會說:View對應android的layout.xml,Model對應android中對數據庫的操作對網絡等操作放在這里進行,Controller對應的則是Activity!

你說的都對,但是你不覺得這樣的對應關系并不好嗎,如果layout.xml對應View,那如果我們想動態(tài)的控制添加一些視圖控件或者改變背景,那么該怎么辦呢?

答曰:在Activity中添加代碼。?。。∵@就是缺點之一所在:Activity既當爹(View)又當媽(Controller),layout.xml代表的View層控制能力太弱。

2:再看一遍我們的MVC的結構圖,View和Model是互相聯系的,存在耦合關系,這就給測試維護帶來了難度。當我們想更換項目中的某個零件時,缺發(fā)現 太難拆下來!這個零件類的方法散布多處。關于MVC的結構圖,忘了在哪聽過一句經典的話,寫三個字母,M,V,C,隨便用線或箭頭連字母,最后就是MVC的結構圖。

 

說完了MVC,該主角登場了,上我們MVP的結構圖。

好處不言而喻,View和Model無法通信了。

View層只負責與View有關的,操作View層時發(fā)出的事件傳遞給Presenter,Presenter去操作Model,操作完Model,再去通知View相應更新。

關于MVP的更多概念:

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式