日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移动开发架构之MVVM模式

發布時間:2024/9/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动开发架构之MVVM模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MVVM概念的提出和起源

MVVM是Model-View-ViewModel的簡寫,最早是由微軟公司提出并運用,是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構架構。

MVVM概念解釋和要點

一、基本概念

mvvm1.png

  • Model:主要為應用程序提供數據。
  • View:還是MVC和MVP中的那個表示層,同時實現UI元素和ViewModel屬性的綁定。
  • ViewModel:為View提供數據支持。

以胖瘦的觀點來看,在MVVM中的Model通常是胖Model即有數據屬性的定義也有數據訪問和處理的行為。ViewModel通常是瘦Model只有數據屬性,一般含有少量邏輯。

二、基本要點

  • View持有ViewModel:在View中通過綁定的方式關聯UI元素和ViewModel的屬性,UI元素的屬性變化和ViewMode的數據屬性進行雙向影響。
  • ViewModel持有Model:Model為ViewModel提供數據支持,同時ViewModel的數據屬性變化也會影響Model上,用于數據提交等。
    Model和ViewModel的功能區別在于,ViewModel是View提供數據支持的,其結構和View保持一致。Model來源于業務處理,保持業務數據的基本關聯和完整性。
  • 當Model層結束查詢或者運算時將結果更新到ViewModel層,ViewModel層因為存在和View的綁定,使得UI層得到通知更新,體現了數據驅動界面的思想。
  • 三、優點

    MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model)有幾大優點:

  • 低耦合。通過ViewMode隔離了View和Model,使得View和Model彼此獨立,一方的變化和修改不會影響到另外一方。
  • 可重用性。一個Model和ViewModel可以服務于很多View。
  • 獨立開發。讓UI開發工作和業務處理工作分開,適合團隊工作。
  • 可測試。界面素來是比較難于測試的,而現在測試可以針對ViewModel來寫。
  • MVVM的經典范例WPF

    MVVM并不是一個新的概念,目前由于在移動開發的運用又被大家廣泛討論。要講解MVVM無論是從起源、概念的定義和最佳運用都不可能離開WPF。

    MVVM和WPF結合時除了滿足MVVM基本架構模式外,由于在UI編輯時(Xaml)支持多模式的數據和事件綁定完美實現View和ViewModel的對接,同時轉換器和觸發器的運用又保證了其靈活性。所以無論是要深入的了解MVVM還是尋求以MVVM模式構建產品,都建議大家仔細的研讀WPF相關開發知識,是個很好的參照。

    MVVM在移動開發中的運用

    移動開發中運用MVVM時,view和viewcontroller(安卓:局文件和Activity)正式聯系在一起,我們把它們視為一個組件。視圖view仍然不能直接引用模型model,當然controller也不能。相反,他們引用視圖模型viewmodel。

    MVVM.png

    用戶輸入驗證邏輯,視圖顯示邏輯處理通常還是要放在ViewController進行,不過對于視圖的控制盡可能通過ViewModel的數據屬性去影響而不是直接操作。發起網絡請求和數據存貯等處理可以放在Model進行但是不可以有任何視圖本身的引用。( model中使用 #import UIKit.h)

    展示邏輯(presentation logic)可以放在了view model中(比如model的值映射到一個格式化的字符串),視圖控制器本身就會不再臃腫。使用MVVM的App是高度可測試的;因為view model包含了所有的展示邏輯并且不會引用view,所以它可以通過編程方式充分測試。

    在android開發方面目前已有像RoboBinding這樣的架構,可以實現在布局文件中完成與ViewModel的綁定工作。IOS中通常建議MVVM與ReactiveCocoa聯合使用。

    Goo框架:IOS的MVVM模式的實現

    ReactiveCocoa作為響應式變成概念上確實很火熱也備受推崇。從架構設計思想學習的角度,個人也是很喜歡的。但是主導在產品開發中運用還是不愿意的。俗話說喜歡一件事物原因有很多種,不喜歡的原因只需要一個,Reactive有別于傳統思路和基本IOS開發思維需要一定代價的的學習代價是每個團隊都不愿意接受的。

    Goo是什么?

    簡單概括一句話:Goo是MVVM模式在IOS開發中的具體實現。使用Goo開發不會改變現有的開發習慣,在一個開發中可以根據具體場景的便利性考慮是否使用Goo,總之Goo具有小巧、靈活和易用等的特點。

    舉個栗子

    Goo.gif

    如圖運行效果,實現通過實現如下幾個小功能來對Goo進行展示。
    1:在TextField中輸入數據下面的Label同步顯示
    2:單擊左側按鈕改變數據內容,同時影響TextField和Label顯示內容
    3:單擊右側按鈕該數據屬性,同時影響TextField和Label的不同屬性。

    接下來看使用Goo來實現的具體代碼情況
    - (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _vm = [TrialDataVM using];
    _vm.text = @"123";

    [self.inputText bindingWithProperty:@"backgroundColor" withObject:_vm withDataSource:@"backgroundColor" withBindingMode:TwoWay]; [self.inputText bindingWithProperty:@"text" withObject:_vm withDataSource:@"text" withBindingMode:TwoWay]; [self.hineLbl bindingWithProperty:@"text" withObject:_vm withDataSource:@"text" withBindingMode:OneWay]; [self.hineLbl bindingWithProperty:@"textColor" withObject:_vm withDataSource:@"backgroundColor" withBindingMode:OneWay]; }- (IBAction)clickAction:(id)sender {_vm.text = @"456";} - (IBAction)otherAction:(id)sender {_vm.backgroundColor =[UIColor redColor];}

    不用驚訝!代碼就這幾行。
    通過bindingWithProperty方法來完成控件和ViewModel的綁定工作,后續只改動ViewModel其自動會影響UI元素的屬性。

    Goo是本人依據MVVM模式手開發的IOS下開源框架,后續會專門寫文章來進行對其進行介紹,同時代碼也會在Github共享。希望感興趣的朋友加入將其繼續完善和推廣。



    作者:紅胡子剛子
    鏈接:https://www.jianshu.com/p/8e452a147d39
    來源:簡書
    著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

    總結

    以上是生活随笔為你收集整理的移动开发架构之MVVM模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 免费极品av一视觉盛宴 | 欧美黑人又粗又大又爽免费 | 在线资源站 | 葵司av电影| 亚洲av无码国产综合专区 | 亚洲视频中文字幕在线观看 | 少妇无码吹潮 | av线上免费观看 | 精品亚洲aⅴ无码一区二区三区 | 朝桐光av在线| 国产一区二区免费电影 | 日本簧片在线观看 | 色女孩综合网 | 97精品人妻一区二区三区香蕉 | www色网| 久久噜噜噜精品国产亚洲综合 | 欧洲成人综合网 | www色婷婷 | 男人的天堂日韩 | 网友自拍av| 国产aaaaaaa | 波多野结衣激情视频 | 在线视频激情小说 | 色乱码一区二区三区在线男奴 | 日韩字幕在线观看 | 欧美日韩综合一区二区三区 | 日韩在线视频看看 | 中文字幕第7页 | 国模大尺度视频 | 国产一卡二卡三卡四卡 | 精品视频免费看 | 免费小视频在线观看 | 色鬼久久| 亚洲精品中文字幕在线播放 | 黑人干亚洲 | 越南少妇做受xxx片 亚洲av综合色区无码一二三区 | 麻豆性生活| 精品少妇爆乳无码av无码专区 | 国产高清免费在线 | 波多野结衣视频免费观看 | 日批视频 | 欧美久久久久久久久久久久久久 | 中文字幕无码乱人伦 | 亚洲天堂资源 | 国产一级片免费在线观看 | 午夜激情在线播放 | 激情视频在线免费观看 | 免费av一区二区三区 | 中文字幕少妇 | 国产性生活一级片 | 亚洲男人在线天堂 | 天天艹天天爽 | 国产在线不卡一区 | 绯色av一区二区 | 亚洲精品高清无码视频 | 日韩免费av一区二区 | 欧美 日韩 国产 成人 在线 | 熟女少妇在线视频播放 | 夜夜骑狠狠干 | 在线免费观看污视频 | 秋霞影院午夜丰满少妇在线视频 | 国产精品理论在线观看 | 国产大屁股喷水视频在线观看 | www.成人精品| 国产人妻人伦精品1国产盗摄 | av中文字幕第一页 | 黄色在线免费观看视频 | 亚洲最大的成人网 | 日韩精品手机在线 | 国产白浆视频 | 亚洲视频a | 国产色网址 | 人妻精品一区二区在线 | 色综合天天综合网天天看片 | 日韩精品成人无码专区免费 | 国产成人免费视频 | 啪网址| 国产aⅴ精品一区二区三区久久 | 天天操天天干天天干 | 亚洲视频在线一区 | 亚洲制服在线观看 | 亚洲影院在线 | 国产美女精品人人做人人爽 | 久久人人爽爽人人爽人人片av | 少妇一级淫免费播放 | 国产农村熟妇videos | 午夜免费高清视频 | 中文字幕不卡一区 | 黄视频免费观看 | 福利免费在线观看 | 成年人视频免费在线观看 | 国产中文字幕在线免费观看 | 手机在线观看免费av | 超碰公开免费 | 国产只有精品 | 少妇伦子伦精品无吗 | 亚洲一区二区三区在线播放 | 精品久久久久久久中文字幕 | 久久久亚洲成人 |