成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

移動開發架構之MVVM模式

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

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只有數據屬性,一般含有少量邏輯。

二、基本要點

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

三、優點

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

  1. 低耦合。通過ViewMode隔離了View和Model,使得View和Model彼此獨立,一方的變化和修改不會影響到另外一方。
  2. 可重用性。一個Model和ViewModel可以服務于很多View。
  3. 獨立開發。讓UI開發工作和業務處理工作分開,適合團隊工作。
  4. 可測試。界面素來是比較難于測試的,而現在測試可以針對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共享。希望感興趣的朋友加入將其繼續完善和推廣。

責任編輯:張子龍 來源: 推酷
相關推薦

2013-07-31 13:13:50

Windows PhoMVVM模式

2024-04-28 10:22:08

.NETMVVM應用工具包

2009-12-21 09:22:51

SilverlightMVVM模式

2012-05-28 10:34:50

MVVM 數據綁定

2021-01-21 05:50:28

MVVM模式Wpf

2011-07-20 13:48:51

2012-04-05 11:35:07

.NET

2023-04-11 07:50:27

軟件架構設計

2013-09-03 10:22:02

人人網移動開發架構

2013-09-03 10:10:00

人人網移動開發架構

2016-08-02 14:29:49

移動支付移動通訊移動金融

2013-03-19 09:08:42

Hybrid App

2011-05-12 17:26:40

移動網站CSS

2022-04-02 23:32:42

數據網格架構

2021-07-02 06:54:45

軟件架構模式

2016-11-30 17:28:02

移動開發iOSAndroid

2023-10-20 13:21:55

軟件設計模式架構

2024-09-18 09:04:33

架構模式查詢

2011-12-29 16:15:52

移動開發者賠錢盈利模式

2011-05-12 17:13:06

移動網站標記語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本免费黄色 | 天天搞天天操 | 国产一区二区三区视频免费观看 | wwwww在线观看 | 黄视频免费 | 成人免费小视频 | av免费入口 | 一二区电影 | 亚洲电影成人 | 日韩av电影院 | 麻豆精品国产91久久久久久 | 亚洲精品国产成人 | 国产精品九九 | 草草草草视频 | 日韩影院在线 | 亚洲精品一区二区三区 | 一区二区三区久久 | 国产目拍亚洲精品99久久精品 | 一级网站 | 欧美中文字幕 | 亚洲国产精品人人爽夜夜爽 | 中文字幕色站 | 日韩午夜 | 精品九九久久 | 国产精品一区二区三区在线 | 欧美成人a | 精品国产不卡一区二区三区 | 久久久精 | 成人午夜免费视频 | 香蕉久久a毛片 | 成人高清在线视频 | 麻豆天堂 | 亚洲国产一区视频 | 不卡欧美 | 国产成人精品亚洲日本在线观看 | 四虎影院新地址 | 亚洲免费一 | 免费h视频 | 日韩中文在线 | 精品日韩一区二区三区av动图 | 羞羞视频在线观看免费观看 |