在第十六天,你已經對程式碼架構有了初步的認識,知道 MVC 如何將程式碼分成 Model、View、Controller 三個部分,讓程式變得更有條理。
但 MVC 在 Android 上有一個問題:因為 Controller 和 View (畫面) 常常都混在同一個 Activity 檔案裡,導致 Activity 變得非常龐大,難以維護。這就像是房子的「總管」(Controller)什麼事都自己做,最後累得半死。
為了解決這個問題,更現代的 MVVM 模式誕生了。
MVVM 是 Model-View-ViewModel 的縮寫。它將 App 程式碼分成三個角色:
ViewModel 的變化,然後自動更新自己的畫面。它不再主動去「告訴」誰要做什麼。MVC 一樣,負責處理資料和業務邏輯。ViewModel 是一個介於 View 和 Model 之間的「智慧助理」。View 不再直接和 Model 溝通,而是把所有需求都交給 ViewModel。ViewModel 會處理 View 的請求,並從 Model 獲取資料。ViewModel 會持有畫面需要的資料,並且能「自動通知」View,當資料有變動時,View 就會自動更新,不用手動去修改。這就是「資料綁定 (Data Binding)」的概念。MVVM 的核心優勢是資料綁定。ViewModel 裡的資料一變動,View 就會自動更新。這大大減少了手動更新畫面的程式碼。Activity 更精簡:因為所有的業務邏輯和資料處理都移到了 ViewModel,Activity 就只剩下最基本的「載入畫面」和「將使用者輸入傳給 ViewModel」的工作。這使得 Activity 變得非常輕薄,更容易維護。ViewModel 有自己獨立的生命週期,它不會因為畫面旋轉或重建而消失。這避免了許多 Activity 重建時可能發生的問題。今天我們學會了:
MVVM 模式的概念,以及 Model、View、ViewModel 三個角色的職責。ViewModel 是 MVVM 的核心,它扮演了「智慧助理」的角色,負責管理資料並自動更新畫面。MVVM 相較於 MVC 的優勢:更精簡的 Activity、自動化的資料更新、更少的錯誤。明天,我們將正式動手,用 MVVM 的架構來實作一個簡單的 App,讓你親身體驗這個現代架構的強大之處!
明天見!