摘要:寫在前面關于軟件架構模式確切的說是一種軟件編碼規范或者軟件開發模式,這幾年罵戰不斷。由微軟架構師和開發,通過利用微軟圖形系統和的互聯網應用派生品的特性來簡化用戶界面的事件驅動程序設計。微軟的和架構師之一于年在他的博客上發表了。
寫在前面關于軟件架構模式(確切的說是一種軟件編碼規范或者軟件開發模式),這幾年罵戰不斷。爭論的焦點主要是在MVC、MVVM、MVP哪種架構最好,哪種架構才是最牛逼的、擴展性更強的、可維護性更高的。筆者不才,在實際項目中很少用過MVP架構,對于MVP的掌握也是只停留在寫寫Demo階段。本篇文章主要著重介紹下MVVM架構在真實項目當中的應用,以及拋開RAC,我們如何自己動手寫一個View和ViewModel之間的綁定框架。
MVVM掃盲MVVM(Model–View–Viewmodel)是一種軟件架構模式。
MVVM有助于將圖形用戶界面的開發與業務邏輯或后端邏輯(數據模型)的開發分離開來,這是通過置標語言或GUI代碼實現的。MVVM的視圖模型是一個值轉換器, 這意味著視圖模型負責從模型中暴露(轉換)數據對象,以便輕松管理和呈現對象。在這方面,視圖模型比視圖做得更多,并且處理大部分視圖的顯示邏輯。 視圖模型可以實現中介者模式,組織對視圖所支持的用例集的后端邏輯的訪問。
MVVM是馬丁·福勒的PM(Presentation Model)設計模式的變體。 MVVM以相同的方式抽象出視圖的狀態和行為,但PM以不依賴于特定用戶界面平臺的方式抽象出視圖(創建了視圖模型)。 MVVM和PM都來自MVC模式。
MVVM由微軟架構師Ken Cooper和Ted Peters開發,通過利用WPF(微軟.NET圖形系統)和Silverlight(WPF的互聯網應用派生品)的特性來簡化用戶界面的事件驅動程序設計。 微軟的WPF和Silverlight架構師之一John Gossman于2005年在他的博客上發表了MVVM。
MVVM也被稱為model-view-binder,特別是在不涉及.NET平臺的實現中。ZK(Java寫的一個Web應用框架)和KnockoutJS(一個JavaScript庫)使用model-view-binder。
以上內容均來自維基百科。MVVM wikipedia。
簡單的講,MVVM是MVC的改進版。我們都知道MVC軟件架構模式是蘋果推薦的開發模式。
MVC中的M就是單純的從網絡獲取回來的數據模型,V指的我們的視圖界面,而C就是我們的ViewController。
在其中,ViewController負責View和Model之間調度,View發生交互事件會通過target-action或者delegate方式回調給ViewController,與此同時ViewController還要承擔把Model通過KVO、Notification方式傳來的數據傳輸給View用于展示的責任。***隨著業務越來越復雜,視圖交互越復雜,導致Controller越來越臃腫,負重前行。臟活累活都它干了,到頭來還一點不討好。福報修多了的結果就是,不行了就重構你,重構不了就換掉你。***
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7015.html
摘要:在說真正的內容之前,咱們還要先來說說與之間的那些事兒。的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。高效核心庫文件壓縮之后只有,遠比的壓縮版文件小得多。這么說還是會比較抽象,接下來咱們用代碼來進一步解釋和之間的關系。 書接上文,上一回咱們說到了如今的前端江湖早已是框架三分天下的格局。接下來,咱們就要說到主角 Vue 了。在說真正的 Vue 內容之前,咱們還要先來說...
摘要:業務層,業務層,是最為核心的一層。對于和的狀態保存恢復也通過處理。對于的綁定操作和命令操作都是暴露的,也易于測試。需要注意的是標簽的節點中要使用到根節點中標簽里設置的的話需要這樣設置抽象類中設置了和注解,只起到清晰提醒作用。 原文發表于:Rockos blog(rocko.xyz)] - MVVM_Android-CleanArchitecture 前言 Architecture is...
閱讀 3234·2021-11-18 10:02
閱讀 1936·2021-09-22 10:54
閱讀 2989·2019-08-30 15:43
閱讀 2576·2019-08-30 13:22
閱讀 1575·2019-08-29 13:57
閱讀 1041·2019-08-29 13:27
閱讀 731·2019-08-26 14:05
閱讀 2512·2019-08-26 13:30