前言
關于安卓的設計模式這個老生常談的話題,多餘的話就不多贅述了。文章内容僅限于我個人對設計模式的了解,便于記錄和複盤。
說明
主流的3種設計模式已在下文中列出,現針對設計模式的 MV 先做說明,再對各個設計模式的層級叙述。
M–>Model(模型層,以下簡稱M層)
即代碼中各個bean或者model這種對象類。通常我們在和背景接口資料互動的時候都要書寫一個對應的資料模型,通過json解析後用于裝填資料友善我們存取做資料的操作。
V–>View(視圖層,以下簡稱V層)
即我們繪制的xml布局檔案或一些自定義的view代碼檔案,這些和UI相關的都屬于該層。
1.MVC設計模式
C–>Controller(控制層,以下簡稱C層)
即繼承Activity,Fragment等的這類代碼檔案。
該模式是由java設計模式演化而來,通過C層讓M層和V層有互動。但是相對應的,代碼邏輯不夠清晰。開發者需要在C層中書寫控件邏輯,接口邏輯,業務邏輯等一系列代碼。造成一個類檔案可能包含幾百上千行的代碼,不友善接手項目的開發者了解和修改頁面的業務邏輯。
2.MVP設計模式
P–>Presenter(互動層,以下簡稱P層)
即處理本該由C層接管的一些簡單邏輯互動以及網絡請求和對應回調。
該模式是對MVC的一次更新,MVC本身C層的負擔過于繁重。控件的互動,網絡的請求,以及請求後對應的回調處理等操作全在C層中實作。這樣代碼量過大且不利于修改和維護,是以将C層中簡單的邏輯判斷以及網絡請求和請求回調後的資料處理這一類的操作提到P層去實作。C層所做的事就是負責丢要處理資料到P層,然後拿到P層的回調,把處理好的資料做裝填,以及一些控件的事件綁定,頁面的跳轉等,而P層負責去建立M層和V層的關系,把結果回調給C層。
3.MVVM設計模式
VM–>ViewModel(資料模型層,以下簡稱VM層)
即V層直接和M層做互動,不通過C層,進一步減輕C層的代碼量,UI界面大篇幅整改的時候使用這種模式更便于修改。
該模式是對MVP或者MVC的進一步更新,如果說MVP縮減了C層的一部分代碼量,那MVVM就是徹底的讓C層與M層還有V層沒有了關系。C層隻負責做對應事件控件的綁定,其餘部分不通過C層這個所謂的控制層做操作,讓M層直接和V層做互動。整個頁面的代碼邏輯更進一步解耦,脈絡也更清晰。