導航:首頁 > 操作系統 > androidmvp理解

androidmvp理解

發布時間:2022-08-29 08:03:35

⑴ 如何理解android mvp模式中的interactor

resenter起到的其實就是一個粘合劑的角色。

它調度了UI邏輯和數據邏輯,然而UI邏輯和數據邏輯的具體實現,Presenter是不用關心的,只需要處理好如何調度,和狀態處理即可。

理解這個之前,你需要理解Model 和 ViewModel,一個Model也就是我們平常說的JavaBean,例如一個User類,它有自己的基本屬性。姓名,年齡,用戶名,密碼等等。

而ViewModel代表的是視圖的Model,例如一個登陸視圖,它的ViewModel包含用戶名,密碼。

所以Model是不能直接被視圖使用的,我們需要轉換成ViewModel的形式,然後綁定到視圖上。

你可能會說,我也可以直接綁定Model的屬性到View上,但是這樣View和Model就不是相互獨立的了,也就違背了我們使用MVP、MVVM的初衷。

Interactor的作用實際上就是獲取Model(從本地資料庫,或者是伺服器),轉換成ViewModel,回調通知把ViewModel傳遞給Presenter。

Presenter實現了Interactor的回調介面,可以接收到ViewModel的實例,此時它在回調函數裡面只需要將接收到的ViewModel綁定的View上面即可。

可以看到,在這個過程中Presenter並沒有觸及到具體的實現,只是把View 和 ViewModel進行了綁定而已。

當然你也可以把數據邏輯寫在Presenter,但是Interactor就不存在了,其實Interactor也是可以重用的。

⑵ Android MVP解釋!,

優點:view由Activity承擔,Presenter做業務,結構清晰(模式么就是講究一個套路,結構清晰後來者維護也是受益的)。之前開發都是全寫一個類-Activity裡面,業務復雜的情況下看著頭疼。看一些公司招android還講究mvc,™Activity到底算v還是c,還是兩者都是?缺點:每個view有個presenter,類多了。不說presenter重用,實際工作中我是沒法抽象使得presenter重用(技術渣)。有時候業務簡單就直接一個Activity搞定了。

⑶ Android為什麼要使用MVP

你好!在Android上邏輯介面和數據存取是緊耦合的,這個問題可以看看CursorAdapter這個例子,它既融合了適配器,同時也有顯示的成分,而cursor很大程度上應該是數據數據存取層的。
MVP模式可以讓顯示界面和數據分離,開發的應用可以分離至少三層,這樣也可以進行獨立測試。有了MVP就可以從Activity中分離大部分代碼,而且不用單元測試可以對每個模塊進行單獨測試了。希望幫助你

⑷ Android MVP與MVC的區別和理解

MVP架構:
View不直接與Model交互,而是通過與Presenter交互來與Model間接交互。
Presenter與View的交互是通過介面來進行的。
通常View與Presenter是一對一的,但復雜的View可能綁定多個Presenter來處理邏輯。
MVC架構:
View可以與Model直接交互。
Controller是基於行為的,並且可以被多個View共享。
可以負責決定顯示哪個View。

⑸ Android MVP 開發模式有哪些優缺點

MVP概念:

MVP(Model-View-Presenter) 是總所周知MVC模式的一個演變,主要目的都是劃分模塊職責,降低模塊耦合,易測試,提高代碼復用。

  1. Model:負責數據的檢索,持久化等操作。

  2. View: 負責UI的繪制和用戶的交互。

  3. Presenter: 作為Model和View的中間協調部分,負責兩者之間的業務邏輯處理。

  1. MVC模式允許View層和Model層直接通訊。

  2. 當某個View的功能很復雜的時候,View和Model的耦合度可能會很高。

  3. MVP模式就沒有這個問題,View會抽象出來一系列操作UI的介面。

  4. Presenter拿到的都是其他兩個層級的介面來做業務邏輯的處理,這樣不僅可以使View和Model之間的耦合度降低,還可以更易得進行單元測試。

  1. 優點:降低耦合,層級職責更明顯,易於單元測試。

  2. 缺點:造成類數量爆炸,代碼復雜度和學習成本高,在某些場景下presenter的復用會產生介面冗餘。

⑹ 如何理解android mvp模式中的interactor

Presenter起到的其實就是一個粘合劑的角色。

它調度了UI邏輯和數據邏輯,然而UI邏輯和數據邏輯的具體實現,Presenter是不用關心的,只需要處理好如何調度,和狀態處理即可。

理解這個之前,你需要理解Model 和 ViewModel,一個Model也就是我們平常說的JavaBean,例如一個User類,它有自己的基本屬性。姓名,年齡,用戶名,密碼等等。

而ViewModel代表的是視圖的Model,例如一個登陸視圖,它的ViewModel包含用戶名,密碼。

所以Model是不能直接被視圖使用的,我們需要轉換成ViewModel的形式,然後綁定到視圖上。

你可能會說,我也可以直接綁定Model的屬性到View上,但是這樣View和Model就不是相互獨立的了,也就違背了我們使用MVP、MVVM的初衷。

Interactor的作用實際上就是獲取Model(從本地資料庫,或者是伺服器),轉換成ViewModel,回調通知把ViewModel傳遞給Presenter。

Presenter實現了Interactor的回調介面,可以接收到ViewModel的實例,此時它在回調函數裡面只需要將接收到的ViewModel綁定的View上面即可。

可以看到,在這個過程中Presenter並沒有觸及到具體的實現,只是把View 和 ViewModel進行了綁定而已。

當然你也可以把數據邏輯寫在Presenter,但是Interactor就不存在了,其實Interactor也是可以重用的

⑺ android mvc和mvp的區別

區別在於

從上圖可以看出:MVC的耦合性還是較高的,View可以直接訪問Model,導致3者之間構成了迴路。所以兩者的主要區別是,MVP中View不能直接訪問Model,需要通過Presenter發出請求,View與Model不能直接通信。

2.與MVVM(Model-View-ViewModel)的區別

MVVM與MVP非常相似,唯一區別是View和Model進行雙向綁定,兩者之間有一方發生變化則會反應到另一方上。MVVM模式有點像ListView與Adapter、數據集的關系,當數據集發生變化時,調用Adapter的notifyDataSetChanged之後View就直接更新,同時它們之間又沒有耦合,使得ListView變得更加靈活。

⑻ 如何實現自己的Android MVP框架

前言MVP作為一種MVC的演化版本在Android開發中受到了越來越多的關注,但在項目開發中選擇一種這樣的軟體設計模式需保持慎重心態,一旦確定使用MVP作為你App的開發模式那麼你就最好堅持做下去,如果在使用MVP模式開發過程中發現問題而且坑越來越大,這時你想用MVC等來重新設計的話基本上就等於推倒重來了。要知道在Android上MVP在現在為止並沒有統一的標准或者框架,不像SSH這三個成熟穩重強而有力的三劍客支持推動著JavaEE的開發,所以在運用MVP時一定要做好自己的理解,並且盡量預知自己App各模塊的需求(客戶說改改改,我們就改改改:-()以便提前做好充分的設計工作。當然MVP既然能出現那麼必然有它的優點的,不然誰會理會這個冒出來的東西,下面就對Android中MVP做一些闡述。MVP簡介相信大家對MVC都是比較熟悉了:M-Model-模型、V-View-視圖、C-Controller-控制器,MVP作為MVC的演化版本,也是作為用戶界面(用戶層)的實現模式,那麼類似的MVP所對應的意義:M-Model-模型、V-View-視圖、P-Presenter-表示器。從MVC和MVP兩者結合來看,Controlller/Presenter在MVC/MVP中都起著邏輯控制處理的角色,起著控制各業務流程的作用。而MVP與MVC最不同的一點是M與V是不直接關聯的也是就Model與View不存在直接關系,這兩者之間間隔著的是Presenter層,其負責調控View與Model之間的間接交互,MVP的結構圖如下所示,對於這個圖理解即可而不必限於其中的條條框框,畢竟在不同的場景下多少會有些出入的。在Android中很重要的一點就是對UI的操作基本上需要非同步進行也就是在MainThread中才能操作UI,所以對View與Model的切斷分離是合理的。此外Presenter與View、Model的交互使用介面定義交互操作可以進一步達到松耦合也可以通過介面更加方便地進行單元測試。MVP結構圖MVP之ModelModel是用戶界面需要顯示數據的抽象,也可以理解為從業務數據(結果)那裡到用戶界面的抽象(Businessrule,dataaccess,modelclasses)。本文Demo為了簡單處理就直接把業務放到了對應的Model之中。MVP之View視圖這一層體現的很輕薄,負責顯示數據、提供友好界面跟用戶交互就行。MVP下Activity和Fragment體現在了這一層,Activity一般也就做載入UI視圖、設置監聽再交由Presenter處理的一些工作,所以也就需要持有相應Presenter的引用。例如,Activity上滾動列表時隱藏或者顯示Acionbar(Toolbar),這樣的UI邏輯時也應該在這一層。另外在View上輸入的數據做一些判斷時,例如,EditText的輸入數據,假如是簡單的非空判斷則可以作為View層的邏輯,而當需要對EditText的數據進行更復雜的比較時,如從資料庫獲取本地數據進行判斷時明顯需要經過Model層才能返回了,所以這些細節需要自己掂量。MVP之PresenterPresenter這一層處理著程序各種邏輯的分發,收到View層UI上的反饋命令、定時命令、系統命令等指令後分發處理邏輯交由業務層做具體的業務操作,然後將得到的Model給View顯示。演示demo動手寫起代碼來才有更好的感覺。demo很簡單,還是上個圖更直觀,輸入城市的代號,點擊按鈕獲取城市的天氣信息然後顯示出來,網路操作使用Volley框架,解析用Gson,其它的就手寫了。整個項目的包設計如下:包結構項目效果預覽包圖中明顯的三層:Model包、Presenter包、UI包,其中,三者都實現各自的結構,Model為WeatherModel、Presenter為WeatherPresenter、View為Weather,那麼具體實現類就是impl包里的了,View層的即為Activity。此外的app和util包無關緊要可以不看。可以看到採用MVP設計後項目明顯多了很多東西,這也是不可避免的,使用原始方法可以使項目開起來簡單些但是以後還有維護呢、測試呢、加功能呢、。。。entity里的實體屬性基本上對應json里的這些屬性了,代碼不貼了View裡面的介面:publicinterfaceWeatherView{voidshowLoading();voidhideLoading();voidshowError();voidsetWeatherInfo(Weatherweather);}WeatherPresenter的介面:{/***獲取天氣的邏輯*/voidgetWeather(StringcityNO);}WeatherModel介面:publicinterfaceWeatherModel{voidloadWeather(StringcityNO,OnWeatherListenerlistener);}prestener裡面還有個OnWeatherListener,其在Presenter層實現,給Model層回調,更改View層的狀態,確保Model層不直接操作View層。如果沒有這一介面在WeatherPresenterImpl實現的話,WeatherPresenterImpl只有View和Model的引用那麼Model怎麼把結果告訴View呢?當然這只是一種解決方案,在實際項目中可以使用Dagger、EventBus、Otto等第三方框架結合進來達到更加松耦合的設計。{/***成功時回調**@paramweather*/voidonSuccess(Weatherweather);/***失敗時回調,簡單處理,沒做什麼*/voidonError();}所以demo的代碼流程:Activity做了一些UI初始化的東西並需要實例化對應WeatherPresenter的引用和實現WeatherView的介面,監聽界面動作,Go按鈕按下後即接收到查詢天氣的事件,在onClick里接收到即通過WeatherPresenter的引用把它交給WeatherPresenter處理。WeatherPresenter接收到了查詢天氣的邏輯就知道要查詢天氣了,然後把查詢天氣的具體業務實現交給WeatherModel去實現同時把WeatherListener即WeatherPresenter自己傳給WeatherModel。WeatherModel進行查詢天氣業務後即把結果通過WeatherListener回調通知WeatherPresenter,WeatherPresenter再把結果返回給View層的Activity,最後Activity顯示結果。就這樣,拍磚之處請拍。End採用哪種軟體設計模式都是為了達到如下目的,找到合適的加以運用就是最好的:易於維護易於測試松耦合度復用性高健壯穩定------------------------------------------------------------------------------------以上內容均參考互聯網,希望以上知識對您有所幫助,

⑼ android mvp m層主要是處理請求嗎

MVP(Model
View
Presenter)模式是著名的MVC(Model
View
Controller)模式的進化版本。
MVP模式:
1.
View:View通常來說是由Activity實現的,它會包含一個Presenter的引用,View要做的就只是在每次有介面調用的時候(比如按鈕點擊後)調用Presenter的方法。
2.
Model:業務邏輯和實體模型
3.
Presenter:主要作為溝通View和Model的橋梁,它從Model層檢索數據後,返回給View層,但是不像MVC結構,因為它也可以決定與View層的交互操作。
MVC模式:
1.
View:對應於布局文件
2.
Model:業務邏輯和實體模型
3.
Controller:控制器,Android中對應於Activity
在MVP模式中,View和Model的交互是需要Presenter來當作一個跳板。Model層負責的就是業務邏輯實現和請求結果回調,實體類也包括在其中。

閱讀全文

與androidmvp理解相關的資料

熱點內容
linux中命令大全 瀏覽:34
pic單片機學習網站 瀏覽:163
843除6的演算法 瀏覽:376
arduino編程視頻 瀏覽:744
pdf背景綠色 瀏覽:612
記事本dos命令 瀏覽:274
伺服器如何搭建多個節點 瀏覽:326
acx演算法 瀏覽:258
幽冥詭匠漫畫全集用什麼app可以看 瀏覽:1001
租用伺服器為什麼越來越慢 瀏覽:960
演算法創新就業方向 瀏覽:423
演算法最優解作者 瀏覽:868
通達信紅綠寶塔線指標源碼 瀏覽:668
app是什麼東西合法嗎 瀏覽:232
怎麼鎖app視頻教程 瀏覽:841
迅捷pdf注冊碼生成器 瀏覽:750
androidsdkosx 瀏覽:304
壓縮面膜紙熒光 瀏覽:841
app怎麼分身三個 瀏覽:746
電影bt下載源碼 瀏覽:424