MVC MVP模式詳解

2021-08-16 19:05:30 字數 2493 閱讀 5248

1、mvc和mvp

mvc:

定義:mvc全名是model view controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,

用一種業務邏輯、資料、介面顯示分離的方法組織**,將業務邏輯聚集到乙個部件裡面,

在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。

原理:當使用者出發事件的時候,view層會傳送指令到controller層,接著controller去通知model層更新資料,model層更新完資料以後直接顯示在view層上。

分層:檢視層(view):

v層:應用層中處理資料顯示的部分,xml布局可以視為v層,顯示model層的資料結果。

控制層(controller):

c層:在android中,activity處理使用者互動問題,因此可以認為activity是控制器,

activity讀取v檢視層的資料(eg.讀取當前edittext控制項的資料),控制使用者輸入(eg.edittext控制項資料的輸入),

並向model傳送資料請求(eg.發起網路請求等),並更新model。

模型層(model):

m層:適合做一些業務邏輯處理,比如資料庫訪問操作,網路操作,複雜的演算法,耗時的任務等都在model層處理。

通知view改變,對應android中的datebase、sharepreference等。(可通過時間訊息匯流排實現,eventbus)

優缺點:

優點:(1)、耦合性低。

所謂耦合性就是模組**之間的關聯程度。

利用mvc框架使得view(檢視)層和model(模型)層可以很好的分離,這樣就達到了解耦的目的,所以耦合性低,

減少模組**之間的相互影響。

(2)、可擴充套件性好。

由於耦合性低,新增需求,擴充套件**就可以減少修改之前的**,降低bug的出現率。(開閉原則)

(3)、模組職責劃分明確。

主要劃分層m,v,c三個模組,利於**的維護。

缺點:在mvc模式中,activity應該是屬於view這一層。而實質上,它既承擔了view,同時也包含一些controller的東西在裡面。

這對於開發與維護來說不太友好,耦合度大高了。

總結:model是對資料的處理、操作、訪問。

view是顯示資料的。

activity在中間起了組織的作用。(controller)

mvp:

定義:mvp把activity中的ui邏輯抽象成view介面,把業務邏輯抽象成presenter介面,model類還是原來的model。

這就是mvp模式,現在這樣的話,activity的工作的簡單了,只用來響應生命週期,其他工作都丟到presenter中去完成。

presenter是model和view之間的橋梁,為了讓結構變得更加簡單,view並不能直接對model進行操作,這也是mvp與mvc最大的不同之處。

分層:(1)、view:

負責繪製ui元素、與使用者進行互動(在android中體現為activity,fragment);

(2)、view inte***ce:

需要view實現的介面,view通過view inte***ce與presenter進行互動,降低耦合,方便進行單元測試;

(3)、model:

負責儲存、檢索、操縱資料(有時也實現乙個model inte***ce用來降低耦合)  

(4)、presenter:

作為view與model互動的中間紐帶,處理與使用者互動的負責邏輯。(通過介面聯絡)

優缺點:

優點模型(model)與檢視(view)完全分離,我們可以修改檢視而不影響模型;

可以更高效地使用模型,因為所有的互動都發生在乙個地方——presenter內部;

我們可以將乙個presenter用於多個檢視,而不需要改變presenter的邏輯。

這個特性非常的有用,因為檢視的變化總是比模型的變化頻繁。

如果我們把邏輯放在presenter中,那麼我們就可以脫離使用者介面來測試這些邏輯(單元測試)

缺點由於對檢視的渲染放在了presenter中,所以檢視和presenter的互動會過於頻繁。

還有一點需要明白,如果presenter過多地渲染了檢視,

往往會使得它與特定的檢視的聯絡過於緊密。

一旦檢視需要變更,那麼presenter也需要變更了。

比如說,原本用來呈現html的presenter現在也需要用於呈現pdf了,

那麼檢視很有可能也需要變更。

對比:mvp模式:

view不直接與model互動,而是通過與presenter互動來與model間接互動

presenter與view的互動是通過介面來進行的,更有利於新增單元測試

通常view與presenter是一對一的,但複雜的view可能繫結多個presenter來處理邏輯   

mvc模式:

view可以與model直接互動。

controller是基於行為的,並且可以被多個view共享。

可以負責決定顯示哪個view。

MVC,MVP 和 MVVM 的詳解

mvc模式的意思是,軟體可以分成三個部分。各部分之間的通訊方式如下。view 傳送指令到 controller controller 完成業務邏輯後,要求 model 改變狀態 model 將新的資料傳送到 view,使用者得到反饋 所有通訊都是單向的。接受使用者指令時,mvc 可以分成兩種方式。一...

理解MVC,MVP和MVVM設計模式

有3個非常受歡迎的mv 系列設計模式 mvc,mvp,mvvm。他們被廣泛應用於不多種結束。這篇文章我回闡述我自己對這3個設計模式的看法。mvc模式 mvc即model view controller。他是1970年代被引入到軟體設計大眾的。mvc模式致力於關注點的切分,這意味著model和cont...

理解MVC,MVP和MVVM設計模式

有3個非常受歡迎的mv 系列設計模式 mvc,mvp,mvvm。他們被廣泛應用於不多種結束。這篇文章我回闡述我自己對這3個設計模式的看法。mvc模式 mvc即model view controller。他是1970年代被引入到軟體設計大眾的。mvc模式致力於關注點的切分,這意味著model和cont...