android 開發(fā)過程中mvp模式實際應用

? ? ? ? ? ?在我們Android實際開發(fā)中,通常會遇到列表中有多中不同樣式,這個時候,常用的MVC模式就使得我們的adapter適配器臃腫不堪,代碼簡潔性就是無稽之談了,所以我們今天介紹的就是MVP模式在實際開發(fā)中的應用。

? ? ? ? ? 首先我說下我所理解的MVP模式:我所理解的MVP是由MVC模式優(yōu)化衍生出來的一種模式,MVP將MVC中的Controller層進行了優(yōu)化生成了Presenter。Presenter的意思就是提出者,Presenter層和MVC的Controller一樣,負責事務核心邏輯,但不一樣的是Presenter是通過接口回調進行數據傳遞,并阻斷了View和Model的直接聯(lián)系,這樣使View和Model專注于自身的業(yè)務邏輯,這樣的好處就是讓我們在處理復雜的事務邏輯的時候相互之間充分解耦。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ~~~~~~~~下面是MVP模式圖~~~~~~~~~~


MVP模式圖

? ? ? ? 比如我在工作中就有一個這樣的需求,在列表中有多種不同的樣式比如視頻,圖片,文字加圖片以及各種別的類型的item,各自item有著自己的事務。在這樣的情況下,如果我們采用MVC模式去做這件事,會發(fā)現我們的adapter,哇,簡直不能再難看了,所以呢用MVP就使得適配器簡潔而便于各自的事務邏輯。下面讓我們用代碼說話吧,來吧皮皮蝦~~


適配器


首先adapter中我們定義上多種類型的顯示,每一個類型就代表著數據中的一個model對應的一個view,這個時候如果還是采用MVC模式的話,那么在CreatView中我們的adapter會變得異常的臃腫,為了使得我們的緩存得到充分的利用把view和model解耦開來,我們需要一個baseviewholder


baseviewholder

? ? ?BaseviewHolder使用泛型使得model可以使用任意類型的對象,onBind就是我們綁定數據的方法,這樣就多處可以使用,非常的方便。現在有了我們的泛型holder對象,現在需要一個管理holder的東東,同時適配器adapter中的對應的數據類型需要我們傳遞進去。


adapter中數據對應cell


ViewHolderFactory對應cell

? ?好了這個就是我們用于管理viewholder的Factory,說到這里大家應該都明白了吧,正如MVP模式示意圖view和model解耦,view中的事務邏輯對應model變化?,F在我們的適配器就不用那么臃腫,現在變得簡潔,更易維護,在實際開發(fā)中,版本的變化非???,良好的設計模式,對應開發(fā)者的工作效率提升技能提升是一種很好的促進。下面看一下適配器的綁定數據


現在是不是很簡潔,很賞心悅目,如果我們使用的MVC模式去做這件事,那么在CreatView中,可以想象,那是一種煎熬。在我們的類型中反射出我們數據中對應的類型,好了下面介紹一下view,我們的view就是一個個的BaseviewHolder,自然需要繼承BaseviewHolder,下面給出一個示例


view示例

? ?到此為止,已經介紹完畢,從MVC到MVP一種優(yōu)雅的提升。非常感謝感謝大家的閱讀,希望對大家有一點點的促進作用,下面附上APP中運行效果。


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

相關閱讀更多精彩內容

  • 轉載至:http://m.itdecent.cn/p/9a6845b26856 “Android MVP 詳解...
    SnowDragonYY閱讀 10,422評論 5 241
  • 作者:李旺成 時間:2016年4月3日 “Android MVP 詳解(下)”已經發(fā)布,歡迎大家提建議。 MVP ...
    diygreen閱讀 129,366評論 85 1,320
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 大家好,我叫小菊群群。這是我第二次,參加好報寫作群。第一次,覺得比較困難,然后擔心不能完成,給自己定下再困難也要堅...
    c577eea5ec5b閱讀 260評論 0 2
  • UIView的常見屬性 NSArray *subviews所有的子控件數組元素的順序決定著子控件的顯示層級順序(下...
    Sean_Jiang閱讀 292評論 0 0

友情鏈接更多精彩內容