【移動應(yīng)用開發(fā)技術(shù)】Android項目開發(fā)該如何選擇架構(gòu)模式_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android項目開發(fā)該如何選擇架構(gòu)模式_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android項目開發(fā)該如何選擇架構(gòu)模式_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Android項目開發(fā)該如何選擇架構(gòu)模式?

小伙伴們,看到這個標(biāo)題,映入腦海的是不是MVC、MVP、MVVM等這些熟悉的字眼?首先我們要知道為什么要選擇架構(gòu)模式?1、代碼可讀性好2、框架的核心思想:解耦3、方便測試4、易于使用和維護(hù)性好減少復(fù)雜性最簡單的方法是將不同實體之間的職責(zé)分開。它應(yīng)該遵循單一責(zé)任原則,應(yīng)該有一個唯一的理由來改變;為什么需要方便測試?當(dāng)一個有效的測試策略用于驗證某些實現(xiàn)與其規(guī)范的一致性時,應(yīng)用程序就被認(rèn)為是可測試的。這些測試可以讓開發(fā)人員在將應(yīng)用程序交付給用戶設(shè)備之前查找和修復(fù)錯誤。為什么易于使用?程序員都明白,編寫的代碼越少,錯誤的機(jī)會就越少;如果代碼邏輯混亂,維護(hù)成本就會相應(yīng)地上升,好的代碼,即使一個新的開發(fā)人員接手,也可以輕松掌握。MVCModel-View-Controller是用于創(chuàng)建軟件應(yīng)用程序的廣泛模式。目前還有很多應(yīng)用程序和框架都實現(xiàn)了這種設(shè)計模式;Model層是域數(shù)據(jù)所在的位置,它管理讀取和寫入數(shù)據(jù)以及持久狀態(tài)。諸如持久性、網(wǎng)絡(luò)代碼、模型對象和操縱數(shù)據(jù)的解析器等保留在這里;View層是應(yīng)用程序的面孔,是負(fù)責(zé)演示(用戶界面)并處理用戶交互的地方;Controller層作為黏合劑,也就是Model層和View層之間的中介(模型和視圖)。它通過對用戶在View中執(zhí)行的操作進(jìn)行響應(yīng)并更新Model層的數(shù)據(jù)來改變模型;那么問題來了,如果我們使用MVC構(gòu)建復(fù)雜的應(yīng)用程序,就會變得困難重重;隨著時間的推移,越來越多的代碼被轉(zhuǎn)移到Controller,使它們更加脆弱和臃腫;Controller與View緊密耦合,如果我們嘗試在View中更改某些內(nèi)容,我們必須回到Controller層并在那里進(jìn)行更改,這違反了權(quán)限特征之間的均衡分配。MVPMVP代表Model-View-Presenter;Cocoa對MVC承諾可在MVP身上實現(xiàn)。它實現(xiàn)了可測試的和清晰的View和Model層分離。該Model層與MVC模型相同,它管理讀寫數(shù)據(jù)和持久狀態(tài),這部分沒有變化。View部分包括視圖和視圖控制器,此處的視圖將用戶交互委托給Presenter層,MVP中的視圖可能比較愚蠢,并且不包含可以查詢模型的邏輯。Presenter層包含處理用戶交互的邏輯,它的責(zé)任是與Model層進(jìn)行通信,將數(shù)據(jù)轉(zhuǎn)換為用戶友好的格式,然后更新View層。在MVP中,視圖控制器被視為View的子類,而不是Presenter。責(zé)任分配在Model和Presenter之間,因為View不包含任何邏輯,從而實現(xiàn)均衡的特征分配。我們不能說MVP是一個完美的模式,或者是不是應(yīng)該遵循MVP,而不需要符合應(yīng)用程序的要求;MVP不適合簡單的應(yīng)用,它將導(dǎo)致編寫樣板代碼從獲得視圖的接口開始工作。MVVMMVVM:視圖模式之一。它代表Model-View-ViewModel;ViewModel是觀察者設(shè)計模式的實現(xiàn),其中model中的任何更改都將在View和ViewModel中表示出來;它包括:Model:表示應(yīng)用程序消耗的數(shù)據(jù)模型。此類聲明屬性以類似于上述兩種設(shè)計的方式來管理業(yè)務(wù)數(shù)據(jù)。View:它類似于MVP。MVVM視圖包括視圖和視圖控制器。它只是保存數(shù)據(jù)并將所有內(nèi)容委托給Model的層。ViewModel:ViewModel作為模型和視圖之間的鏈接。它負(fù)責(zé)包裝模型并準(zhǔn)備視圖所需的可觀察數(shù)據(jù)。我們通過記住一些要點來使用MVVM:view層很笨,只知道如何呈現(xiàn)數(shù)據(jù)。controller對model層一無所知。model不了解viewmodel。viewmodel擁有model。viewcontroller擁有view。controller擁有viewmodel,并通過ViewModel與model層進(jìn)行交互。MVVM幾乎滿足了所有功能,該架構(gòu)的責(zé)任分配在viewmodel和view之間;使用MVVM的優(yōu)點之一是可視性,因為視圖模型與視圖無關(guān),因此每個實體都可以單獨測試這種模式不能用于簡單的線性屏幕應(yīng)用程序,否則可能會導(dǎo)致代碼更復(fù)雜,新開發(fā)人員難以維護(hù)。各位老鐵,你們覺得那種模式更好?其實在我看來,這些模式都是非常經(jīng)典和非常好用的,每種模式都各有優(yōu)點,也各有局限性;其實,換一種思路:以現(xiàn)有的人力資源和時間資源,如何才能更快更好地完成需求,適當(dāng)考慮下如何為后期擴(kuò)展或重構(gòu)做準(zhǔn)備,可能這才是符合“國情”的一種選

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論