摘要:寫在前面關(guān)于軟件架構(gòu)模式確切的說是一種軟件編碼規(guī)范或者軟件開發(fā)模式,這幾年罵戰(zhàn)不斷。由微軟架構(gòu)師和開發(fā),通過利用微軟圖形系統(tǒng)和的互聯(lián)網(wǎng)應(yīng)用派生品的特性來簡化用戶界面的事件驅(qū)動程序設(shè)計。微軟的和架構(gòu)師之一于年在他的博客上發(fā)表了。
寫在前面關(guān)于軟件架構(gòu)模式(確切的說是一種軟件編碼規(guī)范或者軟件開發(fā)模式),這幾年罵戰(zhàn)不斷。爭論的焦點主要是在MVC、MVVM、MVP哪種架構(gòu)最好,哪種架構(gòu)才是最牛逼的、擴展性更強的、可維護性更高的。筆者不才,在實際項目中很少用過MVP架構(gòu),對于MVP的掌握也是只停留在寫寫Demo階段。本篇文章主要著重介紹下MVVM架構(gòu)在真實項目當(dāng)中的應(yīng)用,以及拋開RAC,我們?nèi)绾巫约簞邮謱懸粋€View和ViewModel之間的綁定框架。
MVVM掃盲MVVM(Model–View–Viewmodel)是一種軟件架構(gòu)模式。
MVVM有助于將圖形用戶界面的開發(fā)與業(yè)務(wù)邏輯或后端邏輯(數(shù)據(jù)模型)的開發(fā)分離開來,這是通過置標(biāo)語言或GUI代碼實現(xiàn)的。MVVM的視圖模型是一個值轉(zhuǎn)換器, 這意味著視圖模型負(fù)責(zé)從模型中暴露(轉(zhuǎn)換)數(shù)據(jù)對象,以便輕松管理和呈現(xiàn)對象。在這方面,視圖模型比視圖做得更多,并且處理大部分視圖的顯示邏輯。 視圖模型可以實現(xiàn)中介者模式,組織對視圖所支持的用例集的后端邏輯的訪問。
MVVM是馬丁·福勒的PM(Presentation Model)設(shè)計模式的變體。 MVVM以相同的方式抽象出視圖的狀態(tài)和行為,但PM以不依賴于特定用戶界面平臺的方式抽象出視圖(創(chuàng)建了視圖模型)。 MVVM和PM都來自MVC模式。
MVVM由微軟架構(gòu)師Ken Cooper和Ted Peters開發(fā),通過利用WPF(微軟.NET圖形系統(tǒng))和Silverlight(WPF的互聯(lián)網(wǎng)應(yīng)用派生品)的特性來簡化用戶界面的事件驅(qū)動程序設(shè)計。 微軟的WPF和Silverlight架構(gòu)師之一John Gossman于2005年在他的博客上發(fā)表了MVVM。
MVVM也被稱為model-view-binder,特別是在不涉及.NET平臺的實現(xiàn)中。ZK(Java寫的一個Web應(yīng)用框架)和KnockoutJS(一個JavaScript庫)使用model-view-binder。
以上內(nèi)容均來自維基百科。MVVM wikipedia。
簡單的講,MVVM是MVC的改進版。我們都知道MVC軟件架構(gòu)模式是蘋果推薦的開發(fā)模式。
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ù)重前行。臟活累活都它干了,到頭來還一點不討好。福報修多了的結(jié)果就是,不行了就重構(gòu)你,重構(gòu)不了就換掉你。***
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/7015.html
摘要:在說真正的內(nèi)容之前,咱們還要先來說說與之間的那些事兒。的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。高效核心庫文件壓縮之后只有,遠(yuǎn)比的壓縮版文件小得多。這么說還是會比較抽象,接下來咱們用代碼來進一步解釋和之間的關(guān)系。 書接上文,上一回咱們說到了如今的前端江湖早已是框架三分天下的格局。接下來,咱們就要說到主角 Vue 了。在說真正的 Vue 內(nèi)容之前,咱們還要先來說...
摘要:業(yè)務(wù)層,業(yè)務(wù)層,是最為核心的一層。對于和的狀態(tài)保存恢復(fù)也通過處理。對于的綁定操作和命令操作都是暴露的,也易于測試。需要注意的是標(biāo)簽的節(jié)點中要使用到根節(jié)點中標(biāo)簽里設(shè)置的的話需要這樣設(shè)置抽象類中設(shè)置了和注解,只起到清晰提醒作用。 原文發(fā)表于:Rockos blog(rocko.xyz)] - MVVM_Android-CleanArchitecture 前言 Architecture is...
閱讀 3286·2021-11-18 10:02
閱讀 2009·2021-09-22 10:54
閱讀 3012·2019-08-30 15:43
閱讀 2603·2019-08-30 13:22
閱讀 1598·2019-08-29 13:57
閱讀 1074·2019-08-29 13:27
閱讀 772·2019-08-26 14:05
閱讀 2551·2019-08-26 13:30