MVC、MVP、MVVM是 Android 面試中經常被問到的問題,對于每位打算從事 Android 開發的人來說,這部分的知識都是必須掌握的。
下面就由我來為大家整理一下這部分的知識吧。
MVC
MVC 是 Android 預設的設計,MVC将代碼分為三個部分:
- Model: 負責管理業務資料邏輯 如網絡請求 資料庫處理
- View: Layout中的XML檔案
- Controller: Activity檔案 負責處理表現邏輯
MVC進行了代碼的分離,但是分離程度不夠,Activity依舊還需要處理UI,處理使用者互動,承擔部分View的角色,且Model 和 View 仍存在一定的交叉,隔離度不夠。
MVP
MVP将代碼分為三個部分:
- Model:負責管理業務資料邏輯 如網絡請求 資料庫處理
- View:Activity 和 Layout中的XML檔案
- Presenter:負責處理表現邏輯
将Activity的表現邏輯分離出來由Presenter進行管理,邏輯更加清晰,不過增加了各種回調的接口,代碼變得更加複雜,不利于維護,而且互相依賴會導緻互相影響。
MVVM
MVVM将代碼分為三個部分:
- Model:負責管理業務資料邏輯 如網絡請求 資料庫處理
- View:Activity 和 Layout中的XML檔案
- ViewModel:負責處理表現邏輯 并将資料給可觀察資料容器
通過觀察者模式監聽資料的變化,有效規避了MVP的雙向依賴,但是會導緻多資料流的問題,缺少唯一修改源,不易于追蹤。