Android 中MVC實例之Activity,Window和View


MVC模式的簡單介紹:

除此之外,此模式通過對復雜度的簡化,使程序結構更加直觀。軟件系統通過對自身基本部份分離的同時也賦予了各個基本部分應有的功能。專業人員可以通過自身的專長分組:

  • (控制器Controller)- 負責轉發請求,對請求進行處理。
  • (視圖View) - 界面設計人員進行圖形界面設計。
  • (模型Model) - 程序員編寫程序應有的功能(實現算法等等)、數據庫專家進行數據管理和數據庫設計(可以實現具體的功能)。

ModelViewControllerDiagramZh.pngFile:MVC-Process.png

圖中實線表示方法調用,虛線表示事件

模型(Model) “數據模型”(Model)用於封裝與應用程序的業務邏輯相關的數據以及對數據的處理方法。“模型”有對數據直接訪問的權力,例如對數據庫的訪問。“模型”不依賴“視圖”和“控制器”,也就是說,模型不關心它會被如何顯示或是如何被操作。但是模型中數據的變化一般會通過一種刷新機制被公布。為了實現這種機制,那些用於監視此模型的視圖必須事先在此模型上注冊,從而,視圖可以了解在數據模型上發生的改變。(比較:觀察者模式軟件設計模式))

視圖(View) 視圖層能夠實現數據有目的的顯示(理論上,這不是必需的)。在視圖中一般沒有程序上的邏輯。為了實現視圖上的刷新功能,視圖需要訪問它監視的數據模型(Model),因此應該事先在被它監視的數據那里注冊。

控制器(Controller) 控制器起到不同層面間的組織作用,用於控制應用程序的流程。它處理事件並作出響應。“事件”包括用戶的行為和數據模型上的改變。

Activity的生命周期圖如下所示:

State diagram for an Android Activity Lifecycle.

除了與生命周期有關的方法外,還有若干其他接收用戶輸入的方法,比如onKeyUponKeyMultiple,etc. 這些輸入都可能會造成view的變化。 其實也就是MVC中的C了。View是什么呢,其實也就是Android中的View類和Window做的事情,View is the base class for widgets, which are used to create interactive UI components,把多個View聚合起來,並按照某種方式組合后,由Window將其畫出來就是了,所以Android已經提供了MVC的C和V了,app的開發者就只需要提供M了,根據MVC的慣常用法,M會實現算法,封裝對網絡和數據庫的訪問等。從MVC的架構圖中,我們還看到C和M直接的關系是單向的,只是C發控制命令給M。

Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Models的數據或者屬性,所有依賴的View都會自動更新。似的,只要Controller改變了View,View會從潛在的Model中獲取數據來刷新自己。

 

不多說了,Activity不僅僅是MVC中的C,當它跟其他類配合工作時適用於其他的設計模式中的角色。這里就不介紹了。

 

Reference

1. http://hi.baidu.com/xiaofanqing/item/8ad71c3fd40e810eceb9feb5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM