iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0

在第十六天,你已經對程式碼架構有了初步的認識,知道 MVC 如何將程式碼分成 ModelViewController 三個部分,讓程式變得更有條理。

MVC 在 Android 上有一個問題:因為 ControllerView (畫面) 常常都混在同一個 Activity 檔案裡,導致 Activity 變得非常龐大,難以維護。這就像是房子的「總管」(Controller)什麼事都自己做,最後累得半死。

為了解決這個問題,更現代的 MVVM 模式誕生了。

什麼是 MVVM 模式?

MVVM 是 Model-View-ViewModel 的縮寫。它將 App 程式碼分成三個角色:

1. View (視圖):App 的「外觀」

  • 簡單比喻:就像房子的 「裝潢」
  • 職責
    • 依然只負責顯示畫面。
    • 但它變得更「被動」,它只會觀察 ViewModel 的變化,然後自動更新自己的畫面。它不再主動去「告訴」誰要做什麼。

2. Model (模型):App 的「材料庫」

  • 簡單比喻:就像房子的 「材料庫」
  • 職責
    • MVC 一樣,負責處理資料和業務邏輯。

3. ViewModel (視圖模型):App 的「智慧助理」

  • 簡單比喻:就像一個 「智慧助理」
  • 職責
    • ViewModel 是一個介於 ViewModel 之間的「智慧助理」。
    • View 不再直接和 Model 溝通,而是把所有需求都交給 ViewModel
    • ViewModel 會處理 View 的請求,並從 Model 獲取資料。
    • 最重要的是,ViewModel持有畫面需要的資料,並且能「自動通知View,當資料有變動時,View 就會自動更新,不用手動去修改。這就是「資料綁定 (Data Binding)」的概念。

MVVM vs. MVC:為什麼 MVVM 更好?

  • 雙向綁定MVVM 的核心優勢是資料綁定ViewModel 裡的資料一變動,View 就會自動更新。這大大減少了手動更新畫面的程式碼。
  • Activity 更精簡:因為所有的業務邏輯和資料處理都移到了 ViewModelActivity 就只剩下最基本的「載入畫面」和「將使用者輸入傳給 ViewModel」的工作。這使得 Activity 變得非常輕薄,更容易維護。
  • 避免記憶體洩漏ViewModel 有自己獨立的生命週期,它不會因為畫面旋轉或重建而消失。這避免了許多 Activity 重建時可能發生的問題。

今日總結

今天我們學會了:

  • MVVM 模式的概念,以及 ModelViewViewModel 三個角色的職責。
  • ViewModelMVVM 的核心,它扮演了「智慧助理」的角色,負責管理資料並自動更新畫面。
  • MVVM 相較於 MVC 的優勢:更精簡的 Activity、自動化的資料更新、更少的錯誤。

明天,我們將正式動手,用 MVVM 的架構來實作一個簡單的 App,讓你親身體驗這個現代架構的強大之處!

明天見!


上一篇
Day 16- 程式碼大掃除!程式架構簡介 (MVC)
下一篇
Day18- MVVM 程式碼實作:計數器 App
系列文
Android 開發者養成計畫:從程式邏輯到作品集實戰22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言