• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 谷歌官方MVP Demo解讀

    標簽: mvp

    谷歌官方MVP Demo解讀

    項目結構與目錄結構

    可以看到谷歌是按照模塊分包的,其在tasks為首頁的包,下面解讀其工作流程。

    谷歌的MVP項目中亮點在于:

    • 加入了契約類 Contract來統一管理某個模塊中的presenter接口和view接口。
    • 將Fragment作為view,Activity作為P和V的創建者,并將兩者聯系起來。

    基類與契約類–TasksContract

    契約類中會同時聲明模塊中V和P層的接口并定義好行為,這樣的好處在于我們可以一目了然的看到模塊中的各個功能。

    View層–TasksFragment

    TasksFragment實現了TasksContract.View接口,在界面可見的時候(OnResume)的時候調用P層的start()方法加載數據。

    Presenter層–TasksPresenter

    可以看到在TasksPresenter的構造函數中,會傳入兩個參數

    (@NonNull TasksRepository tasksRepository, @NonNull TasksContract.View tasksView)
    

    其中:tasksRepository就是Model層對象,tasksView就是View層對象。并且會調用方法

     mTasksView.setPresenter(this);
    

    將自身傳遞給View層,這樣View就拿到了Presenter的引用。此時也就形成了下面的通信方式:

    TasksActivity

    TasksActivity并沒有實現TasksContract.View接口,而是負責創建TasksFragment(View)和TasksPresenter(Presenter)從而將兩者聯系起來。

    Model層–TasksRepository

    Model層會判斷獲取本地緩存的數據或者是獲取遠程的數據,這個邏輯是由Model完成的,并通過回調接口回傳數據到Presenter。而Presenter只負責什么時候去獲取數據就行,而不關心數據的來源。

    presenter請求數據

    Model獲取具體的數據并回傳

    回調接口

    本文地址:http://blog.csdn.net/ProdigalWang/article/details/75119384

    版權聲明:本文為ProdigalWang原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/ProdigalWang/article/details/75119384

    智能推薦

    MVP 入門 (Android demo解析)

    1、mvc mvp 由于mvc下的Controller(也就是Activity)非常的臃腫,不僅要管理視圖相關,還要處理一部分邏輯,于是就有了mvp的出現,將Activity看成視圖,讓他僅僅管理視圖相關的工作,Activity不再和業務直接發生關系, 將與業務發生關系的代碼從Activity中抽出,放在presenter 中。 看過別人寫的關于mvp的博客,自己不寫一遍,覺得還是懵懵懂懂,hon...

    Vuforia 官方Demo講解

    官方原文地址:https://library.vuforia.com/articles/Solution/Native-Sample-Application-Template 今天看到的36氪新聞:高通發布面向VR/AR一體機的驍龍XR1芯片 支持4K視頻 模板接口 三個重要的接口:SampleApplicationSession、SampleApplicationControl、SampleAp...

    非官方解讀工廠模式

    工廠方法模式其中包含兩種,這里就寫在一起了,包含普通工廠模式和抽象方法模式,工廠模式可以在一定程度上減少coding,只能是一定程度上.因為我們在使用中往往會增加coding.它最明顯的好處是代碼隔離,復用,解耦.可以理解為我們將復雜的對象的實例化放在工廠模式中進行處理,在使用時工廠模式透明,我們不需要去關心內部如何實現.而解耦則是我們在進行編程時不會進行強制的指向,即通過工廠模式作為統一入口來獲...

    非官方解讀外觀模式

    外觀模式(Facade) : 外觀模式是為了解決類與類之家的依賴關系的,像spring一樣,可以將類和類之間的關系配置到配置文件中,而外觀模式就是將他們的關系放在一個Facade類中,降低了類類之間的耦合度. 通過一個類持有所有其他類的引用,然后統一整合再調用的處理過程 作者是個二吊子,如果描述有誤請指出. 目錄 使用場景 外觀模式 使用場景 日常編碼中,我們會遇到一個處理分成很多個步驟,而每個步...

    非官方解讀組合模式

    組合模式(Composite) : 組合模式有時又叫部分-整體模式在處理類似樹形結構的問題時比較方便 使用場景:將多個對象組合在一起進行操作,常用于表示樹形結構中 作者是個二吊子,如果描述有誤請指出. 目錄 使用場景 組合模式 使用場景 我們可能會操作到一些屬性結構的數據,常見的是省市區,多級菜單.它們會具有較多的類似行為(方法).在這個時候我們常見的操作是進行多級菜單定義或者通用一個類來做.如果...

    猜你喜歡

    非官方解讀代理模式

    代理模式(Proxy) : 代理模式就是多一個代理類出來,替原對象進行一些操作.對方法進行加強.而代理類充當一個中介的角色.我們不直接調用原方法.而是通過代理類進行調用,中間可進行自定義處理.Spring Aop中的通知就是由此而來.代理分為靜態代理,動態代理(Jdk代理),cglib代理三種,下文將進行闡述. 作者是個二吊子,如果描述有誤請指出. 目錄 使用場景 靜態代理 動態代理 cglib代...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡