了解 MVVM 以及為什么它實(shí)際上是有意義的!

什么是設(shè)計模式?

好吧伴郁,在討論 MVVM 或其他設(shè)計模式之前焊傅。首先狐胎,為什么我們需要這些設(shè)計模式,什么是設(shè)計模式暴浦?

設(shè)計模式是您編寫項(xiàng)目的一種方式

  • 假設(shè)您正在構(gòu)建一個項(xiàng)目,并且您希望確保隨著項(xiàng)目以最有效的方式最有效地增長,或者您希望降低代碼庫的復(fù)雜性纷铣,那么您可能正在尋找一種設(shè)計模式程腹,也許您需要它來使用它。

  • 您不需要在簡單的應(yīng)用程序中添加設(shè)計模式见转,在這種情況下使用數(shù)據(jù)和視圖應(yīng)該沒問題。

  • 此外乘客,如果您剛剛開始開發(fā)牡直,您可以進(jìn)一步了解這些內(nèi)容。

MVVM

MVVM 是一種有意義的設(shè)計模式阔加!

  • 為了簡單起見饵史,這就是 MVVM 的含義:

MVVM = Model-View-ViewModel

Model

  • Model通過多個類/對象表示應(yīng)該存在于您的應(yīng)用程序/項(xiàng)目中的數(shù)據(jù),您可以稍后通過 ViewModel 訪問這些數(shù)據(jù)。

  • 現(xiàn)在可以從任何地方檢索這些數(shù)據(jù),它可能來自 API、數(shù)據(jù)庫或任何東西。

  • 在 Android Dev 的上下文中也稱為存儲庫兼丰。

在模型對象/類的情況下,核心是您選擇的任何數(shù)據(jù)(字符串握爷、其他數(shù)據(jù)或其他)姑曙,因?yàn)樗c它聯(lián)網(wǎng)。

你的“Model”應(yīng)該怎么做?

也稱為存儲庫

  1. 不應(yīng)該知道除了 kotlin 中的數(shù)據(jù)類或其他網(wǎng)絡(luò)東西之外的任何東西择浊。

  2. 所有業(yè)務(wù)邏輯都應(yīng)該在這里完成(網(wǎng)絡(luò)或其他東西)戴卜,ViewModel 或其他人可以從中訪問您的“模型”中的數(shù)據(jù)。

看法

您的任何項(xiàng)目的UI都被視為“View”

  • 如果您正在使用 xml+kotlin || xml+java 然后 XML 可以被視為此處的View琢岩,或者如果您正在使用 Jetpack Compose投剥,那么可組合函數(shù)可以被視為此上下文中的“View”。

  • View從不直接包含數(shù)據(jù)担孔,它們會從 ViewModel 或其他獲取數(shù)據(jù)江锨。

你的“View”應(yīng)該做什么?
  1. 所有與你的 UI 相關(guān)的邏輯都應(yīng)該只在這個特定的層中完成糕篇,如果你正在使用 Jetpack Compose啄育,你只需要在可組合的函數(shù)中編寫你的 UI 相關(guān)的東西。

  2. 應(yīng)該能夠與 ViewModel 聊天以從您將更新 UI 的 ViewModel 訪問數(shù)據(jù)拌消。

ViewModel

ViewModel 類旨在以生命周期意識的方式存儲和管理與 UI 相關(guān)的數(shù)據(jù)挑豌。ViewModel 類允許數(shù)據(jù)在配置更改(例如屏幕旋轉(zhuǎn))后繼續(xù)存在。

  • ViewModel 通過 Model 處理 UI 所需的數(shù)據(jù)墩崩,它負(fù)責(zé) UI 的狀態(tài)氓英。

在 ViewModel 的情況下,它的網(wǎng)絡(luò)(聊天)是 UI 和Model鹦筹。

你的“ViewModel”應(yīng)該做什么铝阐?
  1. 確保“ViewModel”不知道您可以從中訪問來自任何其他 UI 文件的數(shù)據(jù)的 UI 內(nèi)容盛龄。

  2. ViewModel 應(yīng)該知道“模型”|| “存儲庫”饰迹,您可以從中從“模型”中獲取所需的數(shù)據(jù)|| “存儲庫”,以便 UI 可以從您的 ViewModel 中獲取該數(shù)據(jù)余舶。

深入了解 MVVM

看一下這張圖片啊鸭,了解我們正在嘗試使用 MVVM 實(shí)現(xiàn)的目標(biāo):

“ViewModel”和“Model”之間的關(guān)系

看看這張圖片,了解ViewModelModel到底做了什么:
  • 模型應(yīng)該只響應(yīng) ViewModel 請求的結(jié)果匿值。

“View”和“ViewModel”之間的關(guān)系

看看這張圖片赠制,了解ViewViewModel到底做了什么:
  • UI 可以從 ViewModel 訪問數(shù)據(jù),并可以相應(yīng)地更新視圖模型數(shù)據(jù)挟憔。

為什么選擇 MVVM钟些?

  • 根據(jù)我的經(jīng)驗(yàn),MVVM 幾乎解決了代碼庫中的一團(tuán)糟绊谭。您可以清楚地了解自己在做什么以及正在發(fā)生什么政恍。使用 Retrofit + MVVM 將是一個很好的組合,它在處理網(wǎng)絡(luò)操作時為您提供了很多您想要的靈活性达传。

  • MVVM 清楚地將這些東西(UI篙耗、邏輯迫筑、其他東西)分解到各自的位置。一般來說宗弯,連接較少的項(xiàng)目結(jié)構(gòu)對擴(kuò)展脯燃、測試等具有很好的兼容性。

文章來源:https://saketh001.hashnode.dev/understanding-mvvm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒙保,一起剝皮案震驚了整個濱河市辕棚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邓厕,老刑警劉巖逝嚎,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邑狸,居然都是意外死亡懈糯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門单雾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赚哗,“玉大人,你說我怎么就攤上這事硅堆∮齑ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵渐逃,是天一觀的道長够掠。 經(jīng)常有香客問我,道長茄菊,這世上最難降的妖魔是什么疯潭? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮面殖,結(jié)果婚禮上竖哩,老公的妹妹穿的比我還像新娘。我一直安慰自己脊僚,他們只是感情好相叁,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辽幌,像睡著了一般增淹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乌企,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天虑润,我揣著相機(jī)與錄音,去河邊找鬼加酵。 笑死拳喻,一個胖子當(dāng)著我的面吹牛梁剔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舞蔽,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼码撰!你這毒婦竟也來了渗柿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤脖岛,失蹤者是張志新(化名)和其女友劉穎朵栖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柴梆,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陨溅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绍在。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片门扇。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖偿渡,靈堂內(nèi)的尸體忽然破棺而出臼寄,到底是詐尸還是另有隱情,我是刑警寧澤溜宽,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布吉拳,位于F島的核電站,受9級特大地震影響适揉,放射性物質(zhì)發(fā)生泄漏留攒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一嫉嘀、第九天 我趴在偏房一處隱蔽的房頂上張望炼邀。 院中可真熱鬧,春花似錦吃沪、人聲如沸汤善。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽红淡。三九已至,卻和暖如春降铸,著一層夾襖步出監(jiān)牢的瞬間在旱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工推掸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桶蝎,地道東北人驻仅。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像登渣,于是被迫代替她去往敵國和親噪服。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容