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...