中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Android項(xiàng)目開(kāi)發(fā)該如何選擇架構(gòu)模式?-創(chuàng)新互聯(lián)

小伙伴們,看到這個(gè)標(biāo)題,映入腦海的是不是MVC、MVP、MVVM等這些熟悉的字眼?

創(chuàng)新互聯(lián)長(zhǎng)期為上千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為陽(yáng)原企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、成都做網(wǎng)站,陽(yáng)原網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

首先我們要知道為什么要選擇架構(gòu)模式?

1、代碼可讀性好

2、框架的核心思想:解耦

3、方便測(cè)試

4、易于使用和維護(hù)性好

減少?gòu)?fù)雜性最簡(jiǎn)單的方法是將不同實(shí)體之間的職責(zé)分開(kāi)。它應(yīng)該遵循單一責(zé)任原則,應(yīng)該有一個(gè)唯一的理由來(lái)改變;

為什么需要方便測(cè)試?

當(dāng)一個(gè)有效的測(cè)試策略用于驗(yàn)證某些實(shí)現(xiàn)與其規(guī)范的一致性時(shí),應(yīng)用程序就被認(rèn)為是可測(cè)試的。這些測(cè)試可以讓開(kāi)發(fā)人員在將應(yīng)用程序交付給用戶(hù)設(shè)備之前查找和修復(fù)錯(cuò)誤。

為什么易于使用?

程序員都明白,編寫(xiě)的代碼越少,錯(cuò)誤的機(jī)會(huì)就越少;如果代碼邏輯混亂,維護(hù)成本就會(huì)相應(yīng)地上升,好的代碼,即使一個(gè)新的開(kāi)發(fā)人員接手,也可以輕松掌握。

MVC

Model-View-Controller是用于創(chuàng)建軟件應(yīng)用程序的廣泛模式。目前還有很多應(yīng)用程序和框架都實(shí)現(xiàn)了這種設(shè)計(jì)模式;

Android項(xiàng)目開(kāi)發(fā)該如何選擇架構(gòu)模式?

Model層是域數(shù)據(jù)所在的位置,它管理讀取和寫(xiě)入數(shù)據(jù)以及持久狀態(tài)。諸如持久性、網(wǎng)絡(luò)代碼、模型對(duì)象和操縱數(shù)據(jù)的解析器等保留在這里;

View層是應(yīng)用程序的面孔,是負(fù)責(zé)演示(用戶(hù)界面)并處理用戶(hù)交互的地方;

Controller層作為黏合劑,也就是Model層和View層之間的中介(模型和視圖)。它通過(guò)對(duì)用戶(hù)在View中執(zhí)行的操作進(jìn)行響應(yīng)并更新Model層的數(shù)據(jù)來(lái)改變模型;

那么問(wèn)題來(lái)了,如果我們使用MVC構(gòu)建復(fù)雜的應(yīng)用程序,就會(huì)變得困難重重;

隨著時(shí)間的推移,越來(lái)越多的代碼被轉(zhuǎn)移到Controller,使它們更加脆弱和臃腫;

Controller與View緊密耦合,如果我們嘗試在View中更改某些內(nèi)容,我們必須回到Controller層并在那里進(jìn)行更改,這違反了權(quán)限特征之間的均衡分配。

MVP

MVP代表Model-View-Presenter; Cocoa對(duì)MVC承諾可在MVP身上實(shí)現(xiàn)。它實(shí)現(xiàn)了可測(cè)試的和清晰的View和Model層分離。

Android項(xiàng)目開(kāi)發(fā)該如何選擇架構(gòu)模式?

該Model層與MVC模型相同,它管理讀寫(xiě)數(shù)據(jù)和持久狀態(tài),這部分沒(méi)有變化。

View部分包括視圖和視圖控制器,此處的視圖將用戶(hù)交互委托給Presenter層,MVP中的視圖可能比較愚蠢,并且不包含可以查詢(xún)模型的邏輯。

Presenter層包含處理用戶(hù)交互的邏輯,它的責(zé)任是與Model層進(jìn)行通信,將數(shù)據(jù)轉(zhuǎn)換為用戶(hù)友好的格式,然后更新View層。

在MVP中,視圖控制器被視為View的子類(lèi),而不是Presenter。責(zé)任分配在Model和Presenter之間,因?yàn)閂iew不包含任何邏輯,從而實(shí)現(xiàn)均衡的特征分配。

我們不能說(shuō)MVP是一個(gè)完美的模式,或者是不是應(yīng)該遵循MVP,而不需要符合應(yīng)用程序的要求;

MVP不適合簡(jiǎn)單的應(yīng)用,它將導(dǎo)致編寫(xiě)樣板代碼從獲得視圖的接口開(kāi)始工作。

MVVM

MVVM:視圖模式之一。它代表Model-View-ViewModel;

ViewModel是觀察者設(shè)計(jì)模式的實(shí)現(xiàn),其中model中的任何更改都將在View和ViewModel中表示出來(lái);

它包括:

Model:表示應(yīng)用程序消耗的數(shù)據(jù)模型。此類(lèi)聲明屬性以類(lèi)似于上述兩種設(shè)計(jì)的方式來(lái)管理業(yè)務(wù)數(shù)據(jù)。

View:它類(lèi)似于MVP。MVVM視圖包括視圖和視圖控制器。它只是保存數(shù)據(jù)并將所有內(nèi)容委托給Model的層。

ViewModel:ViewModel作為模型和視圖之間的鏈接。它負(fù)責(zé)包裝模型并準(zhǔn)備視圖所需的可觀察數(shù)據(jù)。

我們通過(guò)記住一些要點(diǎn)來(lái)使用MVVM:

view層很笨,只知道如何呈現(xiàn)數(shù)據(jù)。

controller對(duì)model層一無(wú)所知。

model不了解viewmodel。

viewmodel擁有model。

view controller擁有view。

controller擁有view model,并通過(guò)ViewModel與model層進(jìn)行交互。

MVVM幾乎滿(mǎn)足了所有功能,該架構(gòu)的責(zé)任分配在viewmodel和view之間;

使用MVVM的優(yōu)點(diǎn)之一是可視性,因?yàn)橐晥D模型與視圖無(wú)關(guān),因此每個(gè)實(shí)體都可以單獨(dú)測(cè)試

這種模式不能用于簡(jiǎn)單的線性屏幕應(yīng)用程序,否則可能會(huì)導(dǎo)致代碼更復(fù)雜,新開(kāi)發(fā)人員難以維護(hù)。
Android項(xiàng)目開(kāi)發(fā)該如何選擇架構(gòu)模式?
各位老鐵,你們覺(jué)得那種模式更好?

其實(shí)在我看來(lái),這些模式都是非常經(jīng)典和非常好用的,每種模式都各有優(yōu)點(diǎn),也各有局限性;

其實(shí),換一種思路:

以現(xiàn)有的人力資源和時(shí)間資源,如何才能更快更好地完成需求,適當(dāng)考慮下如何為后期擴(kuò)展或重構(gòu)做準(zhǔn)備,可能這才是符合“國(guó)情”的一種選擇!

技術(shù)選型,決策關(guān)鍵不在于每種技術(shù)方案的優(yōu)劣如何,而在于你團(tuán)隊(duì)的水平、資源的多寡,要根據(jù)實(shí)際情況選擇最適合你們當(dāng)前階段的架構(gòu)方案

小伙伴們,你們覺(jué)得呢?歡迎在下方留言哦,動(dòng)動(dòng)手指,關(guān)注我們吧!

Android項(xiàng)目開(kāi)發(fā)該如何選擇架構(gòu)模式?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

分享文章:Android項(xiàng)目開(kāi)發(fā)該如何選擇架構(gòu)模式?-創(chuàng)新互聯(lián)
當(dāng)前URL:http://www.rwnh.cn/article36/cecesg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、App設(shè)計(jì)網(wǎng)站制作、小程序開(kāi)發(fā)、網(wǎng)站策劃、用戶(hù)體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
罗平县| 盐池县| 普洱| 连云港市| 汕头市| 安龙县| 济宁市| 英吉沙县| 蒙城县| 丹棱县| 鄂托克旗| 浮山县| 临颍县| 安岳县| 罗源县| 泸定县| 巴马| 三门峡市| 雅安市| 淮北市| 界首市| 孙吴县| 五常市| 胶南市| 台北县| 泽普县| 岳西县| 巴中市| 仲巴县| 东至县| 乌拉特前旗| 昭觉县| 林州市| 清流县| 宝兴县| 同德县| 金平| 个旧市| 尼木县| 筠连县| 横峰县|