Android 中MVC实例之Activity,Window和View
MVC模式的簡(jiǎn)單介紹:
除此之外,此模式通過對(duì)復(fù)雜度的簡(jiǎn)化,使程序結(jié)構(gòu)更加直觀。軟件系統(tǒng)通過對(duì)自身基本部份分離的同時(shí)也賦予了各個(gè)基本部分應(yīng)有的功能。專業(yè)人員可以通過自身的專長(zhǎng)分組:
- (控制器Controller)- 負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求,對(duì)請(qǐng)求進(jìn)行處理。
- (視圖View) - 界面設(shè)計(jì)人員進(jìn)行圖形界面設(shè)計(jì)。
- (模型Model) - 程序員編寫程序應(yīng)有的功能(實(shí)現(xiàn)算法等等)、數(shù)據(jù)庫專家進(jìn)行數(shù)據(jù)管理和數(shù)據(jù)庫設(shè)計(jì)(可以實(shí)現(xiàn)具體的功能)。
圖中實(shí)線表示方法調(diào)用,虛線表示事件
模型(Model) “數(shù)據(jù)模型”(Model)用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對(duì)數(shù)據(jù)的處理方法。“模型”有對(duì)數(shù)據(jù)直接訪問的權(quán)力,例如對(duì)數(shù)據(jù)庫的訪問。“模型”不依賴“視圖”和“控制器”,也就是說,模型不關(guān)心它會(huì)被如何顯示或是如何被操作。但是模型中數(shù)據(jù)的變化一般會(huì)通過一種刷新機(jī)制被公布。為了實(shí)現(xiàn)這種機(jī)制,那些用于監(jiān)視此模型的視圖必須事先在此模型上注冊(cè),從而,視圖可以了解在數(shù)據(jù)模型上發(fā)生的改變。(比較:觀察者模式(軟件設(shè)計(jì)模式))
視圖(View) 視圖層能夠?qū)崿F(xiàn)數(shù)據(jù)有目的的顯示(理論上,這不是必需的)。在視圖中一般沒有程序上的邏輯。為了實(shí)現(xiàn)視圖上的刷新功能,視圖需要訪問它監(jiān)視的數(shù)據(jù)模型(Model),因此應(yīng)該事先在被它監(jiān)視的數(shù)據(jù)那里注冊(cè)。
控制器(Controller) 控制器起到不同層面間的組織作用,用于控制應(yīng)用程序的流程。它處理事件并作出響應(yīng)。“事件”包括用戶的行為和數(shù)據(jù)模型上的改變。
Activity的生命周期圖如下所示:
除了與生命周期有關(guān)的方法外,還有若干其他接收用戶輸入的方法,比如onKeyUp,onKeyMultiple,etc. 這些輸入都可能會(huì)造成view的變化。 其實(shí)也就是MVC中的C了。View是什么呢,其實(shí)也就是Android中的View類和Window做的事情,View is the base class for widgets, which are used to create interactive UI components,把多個(gè)View聚合起來,并按照某種方式組合后,由Window將其畫出來就是了,所以Android已經(jīng)提供了MVC的C和V了,app的開發(fā)者就只需要提供M了,根據(jù)MVC的慣常用法,M會(huì)實(shí)現(xiàn)算法,封裝對(duì)網(wǎng)絡(luò)和數(shù)據(jù)庫的訪問等。從MVC的架構(gòu)圖中,我們還看到C和M直接的關(guān)系是單向的,只是C發(fā)控制命令給M。
Event(事件)導(dǎo)致Controller改變Model或View,或者同時(shí)改變兩者。只要Controller改變了Models的數(shù)據(jù)或者屬性,所有依賴的View都會(huì)自動(dòng)更新。類似的,只要Controller改變了View,View會(huì)從潛在的Model中獲取數(shù)據(jù)來刷新自己。
?
不多說了,Activity不僅僅是MVC中的C,當(dāng)它跟其他類配合工作時(shí)適用于其他的設(shè)計(jì)模式中的角色。這里就不介紹了。
?
Reference
1. http://hi.baidu.com/xiaofanqing/item/8ad71c3fd40e810eceb9feb5
轉(zhuǎn)載于:https://www.cnblogs.com/whyandinside/archive/2012/08/05/2623922.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Android 中MVC实例之Activity,Window和View的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站测试自动化系统—系统应该有的功能
- 下一篇: redmine 邮件发送问题修复