1. 程式人生 > >Android 中 MVC 的簡單理解

Android 中 MVC 的簡單理解

Android 的當前開發MVP已成為開發主流模式,不過MVC的模式,當前專案中還在使用,翻閱了不少部落格和網站,發現每個人理解的MVC 都不同,感覺好暈,簡單的總結一下

MVC模式的目的是實現一種動態的程式設計,使後續對程式的修改和擴充套件簡化,並且使程式某一部分的重複利用成為可能。(wiki)
說到MVC,不得不提三種元件的功能:

模型(Model)負責處理資料和提供資料 (eg:實體Bean,Sql,快取資料處理…)
用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法
檢視(View)展示資料檢視,與使用者互動的頁面 (eg: xml,Activity)
控制器(Controller)處理事件作出響應,負責業務邏輯的處理,起到不同層面間的組織作用,
用於控制應用程式的流程(“事件”包括使用者的行為和資料 Model 上的改變)(eg:Activity,定義的Controller實現)

優點:

  • 重用性高 (多個 View 能共享一個 Model)
  • 耦合性低(三個模組保持相對獨立)
  • 靈活性和可配置性(Controller 可以用來連線不同的 Model 和 View 去完成使用者的需求,根據使用者的需求選擇適當的 Model 進行處理,然後選擇適當的的 View 將處理結果顯示給使用者)
  • 模組開發

標準MVC 元件型別的關係和功能:
來源百度

MVC元件之間的典型合作:
來源wiki

在Android中,按照MVC三層來說
通常把Activity 當作Controller層,xml 當作View層,Activity 需要顯示檢視,這樣View 和Controller並不能完全分離,也帶來了Activity繁重的問題,Activity參與了大量的邏輯處理和檢視互動,
MVC在Android 中表現的很尷尬,不明確
在這裡插入圖片描述


上圖所示:Model 和View 之間用虛線來表示有關聯,個人理解是:Model 資料發生改變,需要事件通過並且在Controller裡面來更新View(也可以通過觀察者模式來實現)。
多想了一步,如果把Activity當作View層,則需要建立Controller層,在Controller 層持有Model層的引用處理邏輯,在Model層處 理資料,再通過Controller 層回撥給View層,參考Android基礎——框架模式MVC在安卓中的實踐