国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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
    +關注

    關注

    20

    文章

    3001

    瀏覽量

    116419
  • MVC
    MVC
    +關注

    關注

    0

    文章

    73

    瀏覽量

    14433
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    LAT1199+TrustZone 架構下使用 LPBAM 導致的 HardFault應用筆記

    客戶在 Nucleo-U575ZI 開發板上使用 TrustZone 架構,測試 LPBAM 功能。首先使能 TrustZone 架構,然后將 LPGPIO 映射到了非安全區,并且配置
    發表于 01-11 17:23 ?0次下載

    芯源MCU架構是不是基本都是ARM架構?還有其他的架構嗎?

    芯源MCU架構是不是基本都是ARM架構?還有其他的架構嗎?
    發表于 11-20 06:21

    浮點舍入模式介紹(六)

    模式(Rounding Mode), RISC-V 架構浮點運算的舍入模式可以通過兩種方式指定。 (1)靜態舍入模式:浮點指令的編碼中有3位作為舍入
    發表于 10-24 07:57

    yaffs文件系統能掛載成功,掉電消失,為什么?

    上電會消失。 代碼里創建文件夾卻失敗。顯示錯誤,返回值-28. 求助大佬。NAND Flash型號是MT29F64G08AFAAAWP。stm32f407。
    發表于 10-13 07:50

    什么是ARM架構?你需要知道的一切

    從智能手機到工業邊緣計算機,ARM?架構為全球數十億臺設備提供動力。ARM?以其效率優先的設計和靈活的許可模式而聞名,已迅速從移動處理器擴展到人工智能邊緣計算、工業控制器,甚至數據中心。本文我們將
    的頭像 發表于 09-11 14:48 ?1267次閱讀
    什么是ARM<b class='flag-5'>架構</b>?你需要知道的一切

    飛睿UWB超寬帶定位測距技術,數字鑰匙重塑智能生活,高精度厘米級定位無感解鎖

    鑰匙消失,門卻更懂你。當厘米級定位遇見空間感知,一場從“主動操作”到“無感響應”的智能革命已悄然到來。
    的頭像 發表于 07-15 15:23 ?1035次閱讀
    飛睿UWB超寬帶定位測距技術,數字鑰匙重塑智能生活,高精度厘米級定位無感解鎖

    AMD FPGA異步模式與同步模式的對比

    本文講述AMD UltraScale /UltraScale+ FPGA 原生模式下,異步模式與同步模式的對比及其對時鐘設置的影響。
    的頭像 發表于 07-07 13:47 ?1635次閱讀

    Vector全流程開發工具鏈概述

    在軟件定義汽車(SDV)時代,汽車軟件的復雜度和重要性顯著提升,開發模式也逐步從基于ECU的獨立軟件開發向集中化、平臺化的軟件架構演進。傳統的開發模式由于硬件與軟件緊耦合,導致升級難度大、開發周期長
    的頭像 發表于 06-17 13:45 ?1148次閱讀
    Vector全流程開發工具鏈概述

    主流版本控制工具Git vs Perforce P4:架構模式、性能、大文件管理及分支管理對比詳解

    Git vs Perforce P4,如何選型?架構模式、性能、大文件管理、分支策略四大維度對比,幫你全面了解兩者的核心差異,選擇更合適你團隊需求的版本控制系統。
    的頭像 發表于 06-13 14:52 ?814次閱讀
    主流版本控制工具Git vs Perforce P4:<b class='flag-5'>架構模式</b>、性能、大文件管理及分支管理對比詳解

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

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

    汽車電氣架構中的電源架構

    隨著汽車電子化、智能化的快速發展,汽車電氣架構(E/E架構)已成為現代汽車的核心技術之一。
    的頭像 發表于 03-29 11:25 ?994次閱讀

    一種基于點、線和消失點特征的單目SLAM系統設計

    本文提出了一種穩健的單目視覺SLAM系統,該系統同時利用點、線和消失點特征來進行精確的相機位姿估計和地圖構建,有效解決傳統基于點特征的SLAM的局限性。
    的頭像 發表于 03-21 17:07 ?1049次閱讀
    一種基于點、線和<b class='flag-5'>消失</b>點特征的單目SLAM系統設計

    基于SCA的軟件無線電系統的概念與架構

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

    博世GTM IP模塊架構介紹

    上篇文章我們介紹博世GTM IP模塊的核心功能及基礎結構模塊。本篇文章將繼續解析GTM模塊架構,重點介紹I/O模塊,特殊功能模塊及內核模塊。這些模塊不僅增強了GTM的信號處理能力,還極大提升了系統的靈活性和集成度,能夠滿足汽車
    的頭像 發表于 03-07 17:50 ?2481次閱讀
    博世GTM IP模塊<b class='flag-5'>架構</b>介紹

    在采用異構模式推理時,如何檢查每層使用的設備是什么?

    在異構模式推理時,無法檢查每層使用的設備是什么
    發表于 03-06 06:49