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

MVC模式在Android開發上的應用研究

2017-03-16 10:40:05劉娜劉如起
山東工業技術 2017年3期

劉娜+劉如起

摘 要:根據Android應用開發語言Java的特點以及MVC模式的思想,提出一種基于注解的MVC模式,可用于Android應用的快速開發中,并根據Android跨進程應用的特點,提出一種解決方案,可使MVC模式用于跨進程應用中。

關鍵詞:Android;Java;MVC;注解;AIDL

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

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

1 MVC模式簡介

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

在MVC設計模式中,三個層次作用清晰,各司其職,互不干涉,某一層的需求發生變化,只需要修改相應層而不會影響到其他層。同時分層設計也利于組件的重用和功能的擴展,可以很方便的用不同的視圖來顯示數據,從而使系統能輕松支持新的邏輯模塊和視圖顯示。因此,在開發中使用MVC設計模式具有顯著的優勢。

2 MVC模式的實現

使用觀察者模式來實現MVC框架。 實現步驟:

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

3 使用注解進行優化

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

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

@Target({ ElementType.METHOD })

@Retention(RetentionPolicy.RUNTIME)

public @interface MVCAction {

String value() default "";

}

注解設定為可以使用在方法上,并且在運行時存在。

接下來的關鍵就是解析注解,在IView里面編寫一個注解解析器,并將解析到的動作名與被該動作所注解的方法的名字一一對應保存在列表中,這樣當模型數據發生變化就通過控制器向視圖發送動作,在控制里面通過動作得到視圖里面的方法名進而通過反射得到對應方法。從而簡化了模型,視圖及控制器類的定義,通過盡可能的重用代碼減小了代碼的復雜度,從而達到快速開發的效果。

4 在Android中應用

在很多Android應用場景中,一個完整的應用是由客戶端與服務來實現的,這樣就可以把客戶端當作視圖,服務當作模型來使用MVC架構了。但是有很多應用的客戶端與服務要運行在不同的進程里面,不能直接使用傳統的MVC框架。這時可以把模型分成兩部分:客戶端的本地模型和服務端的遠程模型,本地模型作為遠程模型的代理與視圖和控制器組成MVC架構。同時本地模型和遠程模型通過AIDL接口進行通訊:遠程模型把將方法信息和打包后的參數傳遞給本地模型。(1) 對參數統一化:把任意數量,任意類型的參數打包并實現Parcelable接口以通過AIDL進行傳遞。(2) 通過AIDL和遠程回調實現遠程模型和本地模型通訊。這樣通過封裝的接口和遠程回調就可以對用戶隱藏本地模型和遠程模型之間的聯系,從而可以像本地通訊一樣在跨進程的應用中使用MVC架構。

5 總結

本文通過觀察者模式實現了一個輕量級的MVC框架,并通過反射和注解對框架中的核心部分進行了優化,從而方便使用。并結合Android系統的應用環境進行分析并擴展從而能方便的使用MVC框架。通過在Android應用中使用MVC模式可以使應用結構清晰,可以視圖層和模型層分別開發,二者的交互交給MVC框架來完成。同時便于后期維護,在模型層不變的情況下可以任意的更換視圖層從而達到快速開發的效果。

參考文獻:

[1]閆術卓,楊強.Struts2技術詳解:基于WebWork核心的MVC開發與實踐[M].電子工業出版社,2008.

[2]李春紅,高建華.使用分層模型改進MVC設計架構[J].計算機工程與設計,2007(04).

[3]陳云芳.精通Struts2:基于MVC的JavaWeb應用開發實戰[M].人民郵電出版社,2008.

[4]冉春玉,白炳杉.MVC模式及struts框架應用研究[J].武漢理工大學學報.

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

[6]劉衛國,姚昱禹.Android的架構與應用開發研究[J].中南大學:信息科學與工程學院計算機系統應用,2008(11):110-112.

主站蜘蛛池模板: 免费一级α片在线观看| 欧美在线精品一区二区三区| 国产99视频在线| 欧美a级在线| 无码乱人伦一区二区亚洲一| 精品自拍视频在线观看| 欧美日韩国产在线人成app| 国产福利免费在线观看| 天堂va亚洲va欧美va国产| yy6080理论大片一级久久| 国产色偷丝袜婷婷无码麻豆制服| 国产浮力第一页永久地址| 97综合久久| 国产视频你懂得| 女人18毛片久久| 免费女人18毛片a级毛片视频| 草逼视频国产| av性天堂网| 成人在线亚洲| 亚洲天堂网站在线| 中文国产成人久久精品小说| 天天干伊人| 99久久精彩视频| 久久99精品久久久大学生| 国产高清在线精品一区二区三区| 丁香婷婷综合激情| 992tv国产人成在线观看| 亚洲国产成人久久77| 91久久偷偷做嫩草影院免费看 | 亚洲天堂精品视频| 国产欧美日本在线观看| 一本大道视频精品人妻| 欧美特黄一级大黄录像| 国产在线小视频| 美女一级免费毛片| 亚洲电影天堂在线国语对白| 91精品国产福利| 国产一级α片| 日本免费精品| 欧美综合一区二区三区| 麻豆国产精品| 亚洲精品视频免费| 欧美亚洲第一页| 欧美国产在线精品17p| AV不卡国产在线观看| 亚洲欧美日韩成人高清在线一区| 久久国产精品嫖妓| 中文字幕无码中文字幕有码在线| 精品国产自| 亚洲乱强伦| 亚洲黄色视频在线观看一区| 啊嗯不日本网站| 国产免费自拍视频| a级毛片免费网站| 国产午夜小视频| 久久婷婷五月综合97色| 亚洲午夜天堂| 天天色综合4| 欧美日韩动态图| 国产sm重味一区二区三区| 97se亚洲综合在线| 久久无码免费束人妻| 日韩区欧美区| 国产白丝av| 欧美亚洲综合免费精品高清在线观看 | 国产精品一线天| 国产中文在线亚洲精品官网| 手机精品视频在线观看免费| 无码视频国产精品一区二区| 亚洲精品在线观看91| 怡红院美国分院一区二区| 国产人成网线在线播放va| 爽爽影院十八禁在线观看| 日韩欧美亚洲国产成人综合| 国产综合欧美| 一级黄色网站在线免费看| 国产三级精品三级在线观看| 国产精品第一区| 真实国产精品vr专区| 亚洲乱伦视频| a毛片免费在线观看| www.精品国产|