色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MVC架構模式為什么悄然消失了

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

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

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

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

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

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

視圖(View)能夠實現數據有目的的顯示。在 View 中一般沒有程序上的邏輯。為了實現 View 上的刷新功能,View 需要訪問它監視的數據模型(Model),因此應該事先在被它監視的數據那里注冊。

控制器(Controller)起到不同層面間的組織作用,用于控制應用程序的流程。它處理事件并作出響應。“事件”包括用戶的行為和數據 Model 上的改變。

Struts和SpringMVC曾經是MVC雙雄。

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

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

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

MVC中的M就是單純的從網絡獲取回來的數據模型,V指的我們的視圖界面,而C就是我們的ViewController。

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

來一張斯坦福老頭經典的MVC架構圖。

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

這張圖是從網上找的,MVVM還在學習階段,后續補一張自己的

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

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

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

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2974

    瀏覽量

    104981
  • MVC
    MVC
    +關注

    關注

    0

    文章

    73

    瀏覽量

    13890
收藏 人收藏

    評論

    相關推薦

    JCMsuite—單模光纖傳播模式

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

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

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

    變頻器出現輸出突然消失故障原因及解決

    ? ? ? 變頻器作為現代工業自動化中不可或缺的重要設備,其在電機調速、節能降耗等方面發揮著關鍵作用。然而,在實際應用中,變頻器偶爾會出現輸出突然消失的故障,這不僅影響生產線的正常運行,還可能對設備
    的頭像 發表于 01-03 07:38 ?158次閱讀

    原子結構模型及特點 原子的組成及結構解析

    原子是物質的基本單位,由原子核和電子組成。原子結構模型的發展經歷幾個階段,每個階段都有其特點和局限性。 一、原子結構模型的演變 道爾頓模型(1803年) 英國化學家約翰·道爾頓提出了原子論,認為
    的頭像 發表于 12-17 15:22 ?913次閱讀

    SSM框架的源碼解析與理解

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

    商湯科技完成戰略組織架構重組

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

    訓練RNN時如何避免梯度消失

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

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

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

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

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

    BLE藍牙掉電綁定信息消失的原因?怎么解決?

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

    RISC--V架構的特點

    RISC--V架構的特點 RISC-V架構RISC-V 架構是基于 精簡指令集計算(RISC)原理建立的開放 指令集架構(ISA),RISC-V是在指令集不斷發展和成熟的基礎上建立的全
    發表于 05-24 08:01

    OrCAD Capture CIS 搜索框消失問題

    之前正常使用的Capure CIS,現在打開突然發現搜索欄欄目消失不能查找放置元件,在網上也找不到相關信息,不知道該如何解決。
    發表于 03-30 09:20

    LoRaWAN網絡架構及三種工作模式

    LoRaWAN(Long Range Wide Area Network,長距離廣域網)是由LoRa聯盟推出的一種低功耗廣域網標準,它定義網絡的通訊協議和系統架構。LoRaWAN技術為電池供電的無線設備提供了局域、全國乃至全球的網絡連接。
    的頭像 發表于 03-05 15:59 ?2760次閱讀

    CY7C68013A跑的USB High Speed模式,在win10上跑著跑著USB設備消失的原因?

    RT所示,我現在用這顆USB芯片,跑的USB High Speed模式,在win10上會出現跑著跑著USB設備消失,設備管理器中都也找不到該設備,必須要重新插拔一下才可以,有時候1
    發表于 02-28 07:42

    用上傳感器,鼠標里的小球消失

    這樣一個小球。早在幾十年前的鼠標身上,就有這樣的球。再往前追溯, 人們甚至直接把保齡球塞進了鼠標的“老前輩”里。 但今天,市面上大部分鼠標里又沒有小球,小球的消失跟光學鼠標的發展有關。 其實早在 1980 年,麻省理工學院的
    的頭像 發表于 02-20 09:19 ?502次閱讀
    主站蜘蛛池模板: 东京热无码中文字幕av专区 | 沦为公交两奶头春药高潮迭起 | 红桃视频国产AV | 一二三四中文字幕在线看 | 在线超碰免费视频观看 | 国产精品一区二区四区 | 亚洲精品6久久久久中文字幕 | 果冻传媒在线完整免费播放 | 国产成+人+综合+亚洲不卡 | 大胸美女被吊起来解开胸罩 | 久久精品国产福利电影网 | 亚洲精品123区在线观看 | 欧美91精品久久久久网免费 | 海角国精产品一区一区三区糖心 | 99热在线视频| 久久人妻熟女中文字幕AV蜜芽 | 日日干夜夜艹 | 国产人在线成免费视频 | 男人的天堂黄色片 | 日本特黄网站 | 神马伦理2019影院不卡片 | 国产成人啪精视频精东传媒网站 | 国产呦精品一区二区三区网站 | yellow免费观看在线 | 中国女人逼 | 亚洲成人黄色片 | 无颜之月5集全免费看无删除 | 国产精品99AV在线观看 | 国产精品久久久久久久伊一 | 久久无码人妻中文国产 | 在线超碰免费视频观看 | 成人性生交大片免费看中文 | 久久婷婷丁香五月色综合啪免费 | 黄色软件色多多 | gogogo高清在线观看 | 色婷婷欧美在线播放内射 | 国产免费久久爱久久啪 | 久久sese | FREE17一18外女破 | 亚洲精品123区在线观看 | 久久综合中文字幕无码 |