女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MVC架構(gòu)模式為什么悄然消失了

汽車玩家 ? 來源:今日頭條 ? 作者:令狐沖學(xué)Java ? 2020-04-12 19:18 ? 次閱讀

投身IT江湖,就像打王者榮耀一樣,好不容易練會了一個硬性,結(jié)果天美把它削弱了,你不得不再去練習(xí)一個。

MVC這門技術(shù)伴隨著我的成長,感情和Java一樣深厚,但是,最近兩年卻不得不和MVC說再見了。是的,不是Struts沒了,也不是SpringMVC沒了,而是MVC這種架構(gòu)模式被淘汰了。當(dāng)時代拋棄你時,連一聲再見都不會說。所以,看到這篇文章的各位程序員兄弟們,緊跟技術(shù)發(fā)展趨勢,再牛逼一點(diǎn)的,能夠提前預(yù)見技術(shù)趨勢,提前準(zhǔn)備,最牛逼的,引領(lǐng)技術(shù)趨勢,咳咳,想的有點(diǎn)多。

我們先回顧一下MVC吧,就像懷念一個老朋友。

MVC模式(Model–view–controller)是軟件工程中的一種軟件架構(gòu)模式,把軟件系統(tǒng)分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。( 摘自 維基百科-MVC )

模型(Model)用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對數(shù)據(jù)的處理方法。“ Model ”有對數(shù)據(jù)直接訪問的權(quán)力,“Model”不依賴“View”和“Controller”,Model 不關(guān)心它會被如何顯示或是如何被操作。但是 Model 中數(shù)據(jù)的變化一般會通過一種刷新機(jī)制被公布。為了實(shí)現(xiàn)這種機(jī)制,那些用于監(jiān)視此 Model 的 View 必須事先在此 Model 上注冊,從而,View 可以了解在數(shù)據(jù) Model 上發(fā)生的改變。

視圖(View)能夠?qū)崿F(xiàn)數(shù)據(jù)有目的的顯示。在 View 中一般沒有程序上的邏輯。為了實(shí)現(xiàn) View 上的刷新功能,View 需要訪問它監(jiān)視的數(shù)據(jù)模型(Model),因此應(yīng)該事先在被它監(jiān)視的數(shù)據(jù)那里注冊。

控制器(Controller)起到不同層面間的組織作用,用于控制應(yīng)用程序的流程。它處理事件并作出響應(yīng)?!笆录卑ㄓ脩舻男袨楹蛿?shù)據(jù) Model 上的改變。

Struts和SpringMVC曾經(jīng)是MVC雙雄。

那是什么導(dǎo)致MVC模式被淘汰了呢?移動時代的到來,展示端愈來愈重要,所以前端技術(shù)發(fā)展越來越猛烈,前端工程師也不再是團(tuán)隊(duì)的小弟了,他們要求和Java工程師平等對話。

前后端分離來了,Node.js來了,前端工程師把MVC的職責(zé)都給搶走了,后端工程師真正成為了后端,只需要提供API給前端就行,再也不用關(guān)心redirectforward有什么區(qū)別,再也不用關(guān)心session、cookies有什么區(qū)別,怎么樣。當(dāng)前端工程師拿走M(jìn)VC的職責(zé)之后,自然會把MVC模式改成更適合前端的模式:MVVM。

MVVM(Model–View–Viewmodel)也是一種軟件架構(gòu)模式,它必將取代MVC,或者說的好聽一些,它是MVC基礎(chǔ)上演化而來。

MVC中的M就是單純的從網(wǎng)絡(luò)獲取回來的數(shù)據(jù)模型,V指的我們的視圖界面,而C就是我們的ViewController。

在其中,ViewController負(fù)責(zé)View和Model之間調(diào)度,View發(fā)生交互事件會通過target-action或者delegate方式回調(diào)給ViewController,與此同時ViewController還要承擔(dān)把Model通過KVO、Notification方式傳來的數(shù)據(jù)傳輸給View用于展示的責(zé)任。隨著業(yè)務(wù)越來越復(fù)雜,視圖交互越復(fù)雜,導(dǎo)致Controller越來越臃腫,負(fù)重前行。臟活累活都它干了,到頭來還一點(diǎn)不討好。福報修多了的結(jié)果就是,不行了就重構(gòu)你,重構(gòu)不了就換掉你。

來一張斯坦福老頭經(jīng)典的MVC架構(gòu)圖。

所以為了解決這個問題,MVVM就閃亮登場了。他把View和Contrller都放在了View層(相當(dāng)于把Controller一部分邏輯抽離了出來),Model層依然是服務(wù)端返回的數(shù)據(jù)模型。而ViewModel充當(dāng)了一個UI適配器的角色,也就是說View中每個UI元素都應(yīng)該在ViewModel找到與之對應(yīng)的屬性。除此之外,從Controller抽離出來的與UI有關(guān)的邏輯都放在了ViewModel中,這樣就減輕了Controller的負(fù)擔(dān)。

這張圖是從網(wǎng)上找的,MVVM還在學(xué)習(xí)階段,后續(xù)補(bǔ)一張自己的

從以上的架構(gòu)圖中,我們可以很清晰的梳理出各自的分工。

View層:視圖展示。包含UIView以及UIViewController,View層是可以持有ViewModel的。

ViewModel層:視圖適配器。暴露屬性與View元素顯示內(nèi)容或者元素狀態(tài)一一對應(yīng)。一般情況下ViewModel暴露的屬性建議是readOnly的,至于為什么,我們在實(shí)戰(zhàn)中會去解釋。還有一點(diǎn),ViewModel層是可以持有Model的。

Model層:數(shù)據(jù)模型與持久化抽象模型。數(shù)據(jù)模型很好理解,就是從服務(wù)器拉回來的JSON數(shù)據(jù)。而持久化抽象模型暫時放在Model層,是因?yàn)镸VVM誕生之初就沒有對這塊進(jìn)行很細(xì)致的描述。按照經(jīng)驗(yàn),我們通常把數(shù)據(jù)庫、文件操作封裝成Model,并對外提供操作接口。(有些公司把數(shù)據(jù)存取操作單拎出來一層,稱之為DataAdapter層,所以在業(yè)內(nèi)會有很多MVVM的變種,但其本質(zhì)上都是MVVM)。

Binder:MVVM的靈魂??上г贛VVM這幾個英文單詞中并沒有它的一席之地,它的最主要作用是在View和ViewModel之間做了雙向數(shù)據(jù)綁定。如果MVVM沒有Binder,那么它與MVC的差異不是很大。

總結(jié)來說,MVC模式本來是完美的,但是隨著移動時代的到來,前端數(shù)據(jù)展示、交互、跳轉(zhuǎn)變得復(fù)雜了,Controller的只能真的不適合在放到后端了,所以MVVM就出現(xiàn)了。

后面的文章中會繼續(xù)闡述MVVM、SPA等前端的架構(gòu)模型,就像練一個天美的新英雄一樣。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2984

    瀏覽量

    106751
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    14050
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    盾華電子600余盞新型智慧路燈“儲能路燈”悄然落地湖北荊門

    盾華電子600余盞新型智慧路燈“儲能路燈”悄然落地湖北荊門
    的頭像 發(fā)表于 04-10 08:37 ?142次閱讀
    盾華電子600余盞新型智慧路燈“儲能路燈”<b class='flag-5'>悄然</b>落地湖北荊門

    一種基于點(diǎn)、線和消失點(diǎn)特征的單目SLAM系統(tǒng)設(shè)計

    本文提出了一種穩(wěn)健的單目視覺SLAM系統(tǒng),該系統(tǒng)同時利用點(diǎn)、線和消失點(diǎn)特征來進(jìn)行精確的相機(jī)位姿估計和地圖構(gòu)建,有效解決傳統(tǒng)基于點(diǎn)特征的SLAM的局限性。
    的頭像 發(fā)表于 03-21 17:07 ?346次閱讀
    一種基于點(diǎn)、線和<b class='flag-5'>消失</b>點(diǎn)特征的單目SLAM系統(tǒng)設(shè)計

    基于SCA的軟件無線電系統(tǒng)的概念與架構(gòu)

    1 軟件通信體系架構(gòu)SCA的基本概念 SCA:Software Communication Architecture,軟件通信架構(gòu);繼承軟件定義無線電SDR的核心設(shè)計思想,構(gòu)造一個
    的頭像 發(fā)表于 03-20 09:30 ?472次閱讀
    基于SCA的軟件無線電系統(tǒng)的概念與<b class='flag-5'>架構(gòu)</b>

    博世GTM IP模塊架構(gòu)介紹

    上篇文章我們介紹博世GTM IP模塊的核心功能及基礎(chǔ)結(jié)構(gòu)模塊。本篇文章將繼續(xù)解析GTM模塊架構(gòu),重點(diǎn)介紹I/O模塊,特殊功能模塊及內(nèi)核模塊。這些模塊不僅增強(qiáng)了GTM的信號處理能力,還極大提升了系統(tǒng)的靈活性和集成度,能夠滿足汽車
    的頭像 發(fā)表于 03-07 17:50 ?739次閱讀
    博世GTM IP模塊<b class='flag-5'>架構(gòu)</b>介紹

    在采用異構(gòu)模式推理時,如何檢查每層使用的設(shè)備是什么?

    在異構(gòu)模式推理時,無法檢查每層使用的設(shè)備是什么
    發(fā)表于 03-06 06:49

    JCMsuite—單模光纖傳播模式

    所需參數(shù)的詳細(xì)描述。 下圖顯示兩個計算本征模的電場的z分量(對數(shù)尺度下)。兩者都屬于相同的有效折射率,屬于雙重簡并。特征值存儲在文件eigenvalues.jcm中。 之后彎曲單模光纖教程會說明如何計算彎曲單模光纖的基本傳播模式。
    發(fā)表于 01-09 08:57

    ADS1299對START PIN接地,DRDY信號就消失,為什么?

    /8192(2.048MHz/8192=250),我用示波器測得出DRDY周期是50Hz。我對START PIN接地,這個DRDY信號就消失,接高電平后,又出來了。先發(fā)SDATAC后,再讀寫寄存器,也不成功。不知道什么原因,請各位幫幫忙!謝謝!急急急。。謝謝!
    發(fā)表于 01-09 07:06

    變頻器出現(xiàn)輸出突然消失故障原因及解決

    ? ? ? 變頻器作為現(xiàn)代工業(yè)自動化中不可或缺的重要設(shè)備,其在電機(jī)調(diào)速、節(jié)能降耗等方面發(fā)揮著關(guān)鍵作用。然而,在實(shí)際應(yīng)用中,變頻器偶爾會出現(xiàn)輸出突然消失的故障,這不僅影響生產(chǎn)線的正常運(yùn)行,還可能對設(shè)備
    的頭像 發(fā)表于 01-03 07:38 ?815次閱讀

    原子結(jié)構(gòu)模型及特點(diǎn) 原子的組成及結(jié)構(gòu)解析

    原子是物質(zhì)的基本單位,由原子核和電子組成。原子結(jié)構(gòu)模型的發(fā)展經(jīng)歷幾個階段,每個階段都有其特點(diǎn)和局限性。 一、原子結(jié)構(gòu)模型的演變 道爾頓模型(1803年) 英國化學(xué)家約翰·道爾頓提出了原子論,認(rèn)為
    的頭像 發(fā)表于 12-17 15:22 ?2940次閱讀

    SSM框架的源碼解析與理解

    MVC模式,使得開發(fā)Web應(yīng)用程序變得更加高效和簡單。 1. Spring框架 基本功能: Spring是一個開源的Java平臺,它提供全面的基礎(chǔ)設(shè)施支持,以便開發(fā)Java應(yīng)用程序。Spring框架
    的頭像 發(fā)表于 12-17 09:20 ?788次閱讀

    商湯科技完成戰(zhàn)略組織架構(gòu)重組

    了全新的“1+X”架構(gòu)模式。其中,“1”代表公司的核心業(yè)務(wù),即全力打造行業(yè)領(lǐng)先的AI云平臺。該平臺將實(shí)現(xiàn)大裝置、基礎(chǔ)模型與AI應(yīng)用之間的無縫集成,為用戶提供更為便捷、高效的AI服務(wù)。 在CV(計算機(jī)視覺)領(lǐng)域,商湯科技更是加大投入力
    的頭像 發(fā)表于 12-13 14:09 ?517次閱讀

    訓(xùn)練RNN時如何避免梯度消失

    在處理長序列數(shù)據(jù)時,RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))模型可能會面臨梯度消失的問題,這是由于反向傳播過程中,由于連續(xù)的乘法操作,梯度會指數(shù)級地衰減,導(dǎo)致較早的時間步的輸入對較后時間步的梯度幾乎沒有影響,難以進(jìn)行
    的頭像 發(fā)表于 11-15 10:01 ?860次閱讀

    Purepath consle在連接PCM1860后除了EVM的標(biāo)簽頁都消失,為什么?

    Purepath consle在連接PCM1860后除了EVM的標(biāo)簽頁都消失
    發(fā)表于 10-22 06:52

    PGA309輸出電壓會無緣無故的消失,為什么?

    我設(shè)計一塊線路板,上面用到了ti的信號調(diào)理芯片PGA309,用AD芯片采樣PGA309的輸出電壓,然后給單片機(jī)處理,芯片調(diào)試好了,效果也還可以,但是遇到一個棘手的問題,就是應(yīng)用過程中給板子上電,會經(jīng)常出現(xiàn)PGA309輸出電壓會無緣無故的消失,變?yōu)?,還請各位給看看,是
    發(fā)表于 08-13 06:39

    BLE藍(lán)牙掉電綁定信息消失的原因?怎么解決?

    測試手機(jī)連接后,重啟ESP32S3,板子上的綁定信息就丟失。還有我添加到白名單的地址也會隨著重啟消失。白名單我可以通過NVS記錄,但是綁定的密鑰信息我無法存儲。我查閱BLE的接口文檔,沒有看到保存綁定信息的接口。請教一下我應(yīng)
    發(fā)表于 06-14 06:25