999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MVC模式在Android開(kāi)發(fā)上的應(yīng)用研究

2017-03-16 10:40:05劉娜劉如起
山東工業(yè)技術(shù) 2017年3期

劉娜+劉如起

摘 要:根據(jù)Android應(yīng)用開(kāi)發(fā)語(yǔ)言Java的特點(diǎn)以及MVC模式的思想,提出一種基于注解的MVC模式,可用于Android應(yīng)用的快速開(kāi)發(fā)中,并根據(jù)Android跨進(jìn)程應(yīng)用的特點(diǎn),提出一種解決方案,可使MVC模式用于跨進(jìn)程應(yīng)用中。

關(guān)鍵詞:Android;Java;MVC;注解;AIDL

DOI:10.16640/j.cnki.37-1222/t.2017.03.118

隨著搭載Android系統(tǒng)的智能設(shè)備的普及,對(duì)Android應(yīng)用的需求也越來(lái)越大,需要一種好的設(shè)計(jì)模式提高開(kāi)發(fā)的效率。MVC(模型-視圖-控制器)設(shè)計(jì)模式將數(shù)據(jù)和表現(xiàn)進(jìn)行分離,既可以使數(shù)據(jù)以不同的形式表現(xiàn),又可以方便的更換數(shù)據(jù)來(lái)源從而提高開(kāi)發(fā)效率。由于Android系統(tǒng)以Java語(yǔ)言做為上層開(kāi)發(fā)語(yǔ)言,本文基于MVC設(shè)計(jì)模式思想以及Java語(yǔ)言的特點(diǎn),提出了一種基于注解的MVC開(kāi)發(fā)框架,可大大簡(jiǎn)化應(yīng)用程序設(shè)計(jì)。又根據(jù)Android應(yīng)用程序的特點(diǎn),提出了一種針對(duì)跨進(jìn)程應(yīng)用使用該框架的方案,提高了框架的適用性。

1 MVC模式簡(jiǎn)介

MVC設(shè)計(jì)模式是一種“分治”的思想,它將模型和視圖分離,從而使同一組數(shù)據(jù)可以使用不同的表現(xiàn)形式。MVC由三部分組成:模型(Model),視圖(View)及控制器。模型即數(shù)據(jù)來(lái)源,負(fù)責(zé)數(shù)據(jù)的生成及相關(guān)邏輯處理,視圖是模型的外在表現(xiàn),一個(gè)模型可以對(duì)應(yīng)一個(gè)或多個(gè)視圖。視圖是應(yīng)用程序與外界輸入的接口。控制器是模型和視圖聯(lián)系的紐帶,一方面將外界輸入交給模型處理,另一方面又將模型處理好的數(shù)據(jù)交給視圖來(lái)表現(xiàn),使模型和視圖同步更新。

在MVC設(shè)計(jì)模式中,三個(gè)層次作用清晰,各司其職,互不干涉,某一層的需求發(fā)生變化,只需要修改相應(yīng)層而不會(huì)影響到其他層。同時(shí)分層設(shè)計(jì)也利于組件的重用和功能的擴(kuò)展,可以很方便的用不同的視圖來(lái)顯示數(shù)據(jù),從而使系統(tǒng)能輕松支持新的邏輯模塊和視圖顯示。因此,在開(kāi)發(fā)中使用MVC設(shè)計(jì)模式具有顯著的優(yōu)勢(shì)。

2 MVC模式的實(shí)現(xiàn)

使用觀察者模式來(lái)實(shí)現(xiàn)MVC框架。 實(shí)現(xiàn)步驟:

(1)定義抽象類(lèi)Subjecter,持有觀察者類(lèi)的對(duì)象。(2)定義抽象類(lèi)IModel繼承Subjecter,作為模型的基類(lèi)。(3)定義抽象類(lèi)IView繼承Subjecter,作為視圖的基類(lèi)。(4)定義抽象類(lèi)IController,作為控制器,作為模型和視圖之間的紐帶,控制器類(lèi)同時(shí)持有模型和視圖對(duì)象。(5)定義觀察者Observer,觀察者持有控制器對(duì)象。通過(guò)以上定義可以看到,模型和視圖持有觀察者對(duì)象,觀察者又持有控制器對(duì)象,而在控制器又同時(shí)持有模型和視圖對(duì)象。這樣一旦模型的數(shù)據(jù)發(fā)生變化就可以通知觀察者,觀察者使用控制器來(lái)通知視圖進(jìn)行更新。而觀察者中的控制器和控制器中的視圖都是可以方便的更換,從而通過(guò)不同的控制器就實(shí)現(xiàn)了模型和視圖的分離,也就是MVC模式。

3 使用注解進(jìn)行優(yōu)化

建立了MVC模式之后,通過(guò)繼承IModel,IView,IController就可以使用MVC模式來(lái)進(jìn)行開(kāi)發(fā)了,但是在模型里面每多一種變化,相應(yīng)的在控制器和視圖里面就要增加代碼來(lái)通知視圖和響應(yīng)這種變化,從編程的角度來(lái)看這些響應(yīng)過(guò)程其實(shí)就是調(diào)用視圖類(lèi)相應(yīng)的方法,在傳統(tǒng)的編程中需要先在視圖中定義方法,然后在控制器中調(diào)用。所以簡(jiǎn)化的關(guān)鍵是實(shí)現(xiàn)動(dòng)態(tài)調(diào)用方法。JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性。由于Java反射機(jī)制是基于方法名或變量名的字符串來(lái)實(shí)現(xiàn)的。可以使用字符串存儲(chǔ)視圖里面的方法名,然后控制器讀取字符串也就是方法名再通過(guò)反射來(lái)調(diào)用相應(yīng)的方法。注解(Annotation),也叫元數(shù)據(jù)。可以聲明在包、類(lèi)、字段、方法、局部變量、方法參數(shù)等的前面,用來(lái)對(duì)這些元素進(jìn)行說(shuō)明,注釋。注解可以通過(guò)反射來(lái)獲取。這樣就可以把模型的變化定義為一個(gè)字符串類(lèi)型的動(dòng)作,給視圖的相應(yīng)方法加上以這個(gè)動(dòng)作為值的注解,然后在控制器里面讀取相應(yīng)的注解,從而使模型的變化與視圖的響應(yīng)方法自動(dòng)的對(duì)應(yīng)起來(lái),這樣就減少了代碼量,更易于使用。

基于上面的思路,首先定義注解:

@Target({ ElementType.METHOD })

@Retention(RetentionPolicy.RUNTIME)

public @interface MVCAction {

String value() default "";

}

注解設(shè)定為可以使用在方法上,并且在運(yùn)行時(shí)存在。

接下來(lái)的關(guān)鍵就是解析注解,在IView里面編寫(xiě)一個(gè)注解解析器,并將解析到的動(dòng)作名與被該動(dòng)作所注解的方法的名字一一對(duì)應(yīng)保存在列表中,這樣當(dāng)模型數(shù)據(jù)發(fā)生變化就通過(guò)控制器向視圖發(fā)送動(dòng)作,在控制里面通過(guò)動(dòng)作得到視圖里面的方法名進(jìn)而通過(guò)反射得到對(duì)應(yīng)方法。從而簡(jiǎn)化了模型,視圖及控制器類(lèi)的定義,通過(guò)盡可能的重用代碼減小了代碼的復(fù)雜度,從而達(dá)到快速開(kāi)發(fā)的效果。

4 在Android中應(yīng)用

在很多Android應(yīng)用場(chǎng)景中,一個(gè)完整的應(yīng)用是由客戶(hù)端與服務(wù)來(lái)實(shí)現(xiàn)的,這樣就可以把客戶(hù)端當(dāng)作視圖,服務(wù)當(dāng)作模型來(lái)使用MVC架構(gòu)了。但是有很多應(yīng)用的客戶(hù)端與服務(wù)要運(yùn)行在不同的進(jìn)程里面,不能直接使用傳統(tǒng)的MVC框架。這時(shí)可以把模型分成兩部分:客戶(hù)端的本地模型和服務(wù)端的遠(yuǎn)程模型,本地模型作為遠(yuǎn)程模型的代理與視圖和控制器組成MVC架構(gòu)。同時(shí)本地模型和遠(yuǎn)程模型通過(guò)AIDL接口進(jìn)行通訊:遠(yuǎn)程模型把將方法信息和打包后的參數(shù)傳遞給本地模型。(1) 對(duì)參數(shù)統(tǒng)一化:把任意數(shù)量,任意類(lèi)型的參數(shù)打包并實(shí)現(xiàn)Parcelable接口以通過(guò)AIDL進(jìn)行傳遞。(2) 通過(guò)AIDL和遠(yuǎn)程回調(diào)實(shí)現(xiàn)遠(yuǎn)程模型和本地模型通訊。這樣通過(guò)封裝的接口和遠(yuǎn)程回調(diào)就可以對(duì)用戶(hù)隱藏本地模型和遠(yuǎn)程模型之間的聯(lián)系,從而可以像本地通訊一樣在跨進(jìn)程的應(yīng)用中使用MVC架構(gòu)。

5 總結(jié)

本文通過(guò)觀察者模式實(shí)現(xiàn)了一個(gè)輕量級(jí)的MVC框架,并通過(guò)反射和注解對(duì)框架中的核心部分進(jìn)行了優(yōu)化,從而方便使用。并結(jié)合Android系統(tǒng)的應(yīng)用環(huán)境進(jìn)行分析并擴(kuò)展從而能方便的使用MVC框架。通過(guò)在Android應(yīng)用中使用MVC模式可以使應(yīng)用結(jié)構(gòu)清晰,可以視圖層和模型層分別開(kāi)發(fā),二者的交互交給MVC框架來(lái)完成。同時(shí)便于后期維護(hù),在模型層不變的情況下可以任意的更換視圖層從而達(dá)到快速開(kāi)發(fā)的效果。

參考文獻(xiàn):

[1]閆術(shù)卓,楊強(qiáng).Struts2技術(shù)詳解:基于WebWork核心的MVC開(kāi)發(fā)與實(shí)踐[M].電子工業(yè)出版社,2008.

[2]李春紅,高建華.使用分層模型改進(jìn)MVC設(shè)計(jì)架構(gòu)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(04).

[3]陳云芳.精通Struts2:基于MVC的JavaWeb應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)[M].人民郵電出版社,2008.

[4]冉春玉,白炳杉.MVC模式及struts框架應(yīng)用研究[J].武漢理工大學(xué)學(xué)報(bào).

[5]Bruce Eckel .Thinking in java(java編程思想)第四版[M].北京:機(jī)械工業(yè)出版社,2011.

[6]劉衛(wèi)國(guó),姚昱禹.Android的架構(gòu)與應(yīng)用開(kāi)發(fā)研究[J].中南大學(xué):信息科學(xué)與工程學(xué)院計(jì)算機(jī)系統(tǒng)應(yīng)用,2008(11):110-112.

主站蜘蛛池模板: 激情国产精品一区| 久操线在视频在线观看| 国产综合日韩另类一区二区| 福利在线不卡| av一区二区三区高清久久| 97久久超碰极品视觉盛宴| 国产在线麻豆波多野结衣| 精品国产黑色丝袜高跟鞋| 亚洲区第一页| 国产门事件在线| 亚洲永久色| 欧美一级大片在线观看| 久久久久亚洲av成人网人人软件| 国产一级做美女做受视频| 91视频99| 国产精品久久精品| 久久香蕉国产线看精品| 色欲国产一区二区日韩欧美| 国产欧美亚洲精品第3页在线| 99久久精品无码专区免费| 午夜小视频在线| 国产精品密蕾丝视频| 国产美女一级毛片| 伊人天堂网| 黄色片中文字幕| 午夜免费小视频| 亚洲综合一区国产精品| 日本黄色a视频| 国产成人狂喷潮在线观看2345| 国产精品欧美在线观看| 欧美日韩高清在线| 国产理论一区| 亚洲视频二| 久久亚洲天堂| 日韩精品免费在线视频| 丰满的少妇人妻无码区| 中文字幕亚洲第一| 女人18毛片久久| 99er这里只有精品| 在线视频亚洲色图| 91成人在线免费观看| 中文字幕在线播放不卡| 日韩国产一区二区三区无码| 国产精品久久久久久久伊一| 毛片在线看网站| 国产香蕉国产精品偷在线观看| 午夜激情福利视频| 色视频国产| 久久综合国产乱子免费| 亚洲人成网站色7799在线播放| 色天天综合| 精品91视频| 婷婷综合亚洲| 亚洲IV视频免费在线光看| 中文字幕永久视频| 国产精品人莉莉成在线播放| av一区二区人妻无码| 国产成人无码播放| 欧美午夜久久| 亚洲精品成人7777在线观看| 国产小视频免费观看| 婷婷伊人久久| a天堂视频| 成人亚洲国产| 天天做天天爱夜夜爽毛片毛片| 亚洲综合第一页| 91精品国产综合久久不国产大片| 自拍偷拍欧美| 亚洲精品中文字幕无乱码| 欧美亚洲另类在线观看| 丁香五月激情图片| AV老司机AV天堂| 97在线观看视频免费| 国产性生大片免费观看性欧美| 午夜精品福利影院| 日韩视频免费| 2022国产无码在线| 手机在线免费不卡一区二| 一级黄色网站在线免费看| 伊人中文网| 欧美国产日韩一区二区三区精品影视| 在线精品自拍|