摘 要: 針對以往設計模式的特點,在面向對象基礎上對現有的設計模式進行分析,制定出一套能夠應用于Android系統環境下的自定義設計模式,并且用自己設計的一款單詞軟件來驗證其效率,實現了代碼復用性高,程序設計簡潔的目的。結果表明,應用合適的設計模式可以使得Android系統下的軟件設計過程變得更為簡便,功能更為強大。
關鍵詞: 設計模式; 面向對象方法; Android; 單詞軟件
中圖分類號: TN919?34 文獻標識碼: A 文章編號: 1004?373X(2013)20?0051?03
0 引 言
設計模式是解決軟件設計知識和設計方案復用的技術手段,它是在一定條件下對如何組合類之間的關系進行描述的一種解決方案。其誕生的意義在于將復雜的程序設計過程變得簡單清晰,提高代碼復用,并制定出相應的規范標準供后來人使用。自從E.Gamma 等人提出了設計模式的概念[1],設計模式作為解決設計問題一種標準型規范,得到了廣大開軟件研究開發人員的重視和關注,并且在廣闊的領域得到了發展和應用[2]。隨著時間推移,新的設計模式的提出也越來越多,例如F.Bushmann、M.Kircher 等都在之前的基礎上提出了各自的設計模式,并且被相應的推廣和應用[3]。設計模式的應用也被越來越多的人開發和研究。
Android是基于Linux內核的開源性嵌入式系統,主要應用于手機或者平板電腦等移動設備。是由Google在2005年收購并注資,隨后組織開放聯盟對性能進行改良,采用多任務處理,進而擴展到各個移動終端的使用上,該平臺由操作系統、中間件、用戶界面和應用軟件組成,Android平臺存在多種類型的應用程序[4?5]。而對于開發者而言,設計出有觀賞性且實用的軟件則是其基本要求。在這其中涉及到很多的制約因素,比如手機本身硬件的強大與否,屏幕尺寸所帶來的觀感,以及軟件在運行過程中所占用的RAM空間等。這就需要開發者在現有條件基礎上開發時時刻考慮其軟件設計模式的高效性,以最簡潔的方式來實現強大的功能,巧妙的設計軟件結構,來完成設計的需要。
1 設計模式概述
設計模式根據目的來分類,可分為3類:創建型、結構型和行為型。創建型模式是針對對象的創建過程,結構型模式對應對象或者類之間的關系,行為型模式則根據類或者對象之間的關系進行不同的協作和分工。設計模式為開發者提供了可以借鑒的經驗,上述模式都是已經成型并且應用于軟件設計的經典解決方案,可以很好的提高代碼復用性,提高開發者的工作效率[6]。
1.1 創建型
軟件的設計就是開發者用類和對象組建一個系統的過程,這個系統是面向對象的。開始設計軟件之前,開發者會需要處理很多的開發組件,例如下拉列表、單選按鈕、多選按鈕、菜單等。第一步是將這些抽象概念具體化,也就是是實例化對象,才能進行下一步的工作,創建型模式的具體工作可以說就是對象化。一般的創建型模式以下面的幾個為代表:抽象工廠模式(Abstract Factory)、工廠方法模式(Factory Method) 、生成器模式(Builder)、單件模式(Singleton) 、原型模式(Prototype)等[7?8]。
1.2 結構型
組件間的組合是在其設定完成后需要做的事情。結構型模式就是將實例化的類或者對象組合拼接在一起,會利用繼承機制來完成。這一模式通常會應用于多個單獨類庫的組合。結構型模式可以做如下分類:適配器模式(Adapter)、裝飾模式(Decorator)、組成模式(Composite)、外觀模式(Fa?ade)、享員模式(Flyweight)、橋接模式(Bridge)、代理模式(Proxy) 等[7?8]。
1.3 行為型
在完成了實例化以及組合的具體行為之后,就需要對對象進行操作了。行為型模式的主要任務是通過算法對對象之間進行不同的調配,同樣在類中間使用繼承的方式。常見的行為模式有: 策略模式(Strategy)、職責鏈模式(Chain of Responsibility)、解釋器模式(Interpreter)、命令模式(Command) 、迭代模式(Iterator)、觀察者模式(Observer)、訪問者(Visitor)等,以及相對更為復雜的(如視圖/模型/控制器模式)等[7?8]。
2 Android系統概述
2.1 Android系統架構
Android系統是基于Linux去實現的,架構采用的是分層結構,一共分為4個層,從高層到低層分別是Application,Application Framework,Libraries和Linux Kernel[9]。
Android在發布的時候自帶了許多系統應用,這些應用包括某些客戶端,SMS短信,瀏覽器,日歷,地圖,通訊錄等。這些自帶的應用程序都是用Java編寫的,幾乎所有Android系統的手機都包括這些基本的應用程序。因為系統本身是基于Linux內核,所有系統自帶軟件的卸載都需要root權限,類似于Linux的root用戶命令。
圖1可以看到,最上層是應用程序層,用Java語言操作,下一層則是應用框架層,包含各大系統組件,應用程序框架是Android開發的基礎,提供各種API供開發者使用[10]。再下層是本地接口層 ,包含核心類庫。最底層是修改過的Linux 系統,提供了與設備硬件交互的相關接口。
開發者只需要在最上層用Java語言設計自己的軟件,調用相應接口就可以實現自己想要的功能。
2.2 Android安全機制
Android操作系統的權限都是分立的。由于權限不統一管理,每個應用都以惟一的能夠被系統識別的ID來運行,系統的各部分也都有其獨立的識別方式。Linux的特點就是將應用之間、應用與系統之間隔離開[11]。在應用開發時,開發者如果需要操作某些功能或者獲取系統服務,比如要獲取網絡下載權限或者讀寫SD卡中的文件,則需要在manifest.xml中填寫相應的權限代碼。
3 設計模式在Android系統下的應用
3.1 Android自定義設計模式
模式的選擇建立在需求和設計均需形式化描述的基礎上,而目前現有的固定成型的設計模式對于Android開發有一定的局限性,受框架的影響,很多原先的模式并不能很好的運用于Android上,所以就需要開發者靈活掌握設計思路,進而開發出屬于自己的設計模式以便于將來使用,并且減少工作量,提高代碼的復用性以及軟件的靈活性[12]。模式的開發和運用對于每個開發者而言都是必不可少的事情,下面筆者將以一款單詞軟件來說明設計模式對于軟件設計的重要作用。
3.2 兩種設計模式對比
(1)靜態模式
靜態模式如圖2所示。
(2)動態模式
動態模式如圖3所示。
(3)對比結果
可以很清楚的看到,前一種設計模式是一種樹狀的結構,設計思路很直觀,不過卻是一個大量的工程,因為在Android里面每一個UI都對應一個類,這樣一來可能需要上百個類才能實現其功能。而第二種模式采用的是類對應條目、內容根據之前的限定條件來填充的思路,一個框架對應一個類,所有數據都從SQLite中實時讀取,根據之前Intent傳遞過來的限定條件篩選內容進而顯示出不同的內容,只需4個UI類便可以實現原先需要上百個類實現的功能,思路變得簡單清晰。
3.3 程序運行結果
此軟件依據動態設計模式完成后可以很好的在虛擬機和真機上運行,效果如圖4所示。
4 結 語
本文通過對以往設計模式的研究,在分析以往模式的基礎上總結出自己的設計模式,并將其應用于Android系統下的實際開發之中。通過實例驗證表明,不同的設計模式帶來的工作量以及程序的簡潔程度都有很大區別,模式的優化程度決定了程序設計的高效性,模式的開發也將是可以被反復驗證,不斷完善的。隨著時間的推移,相信將來會有更多的適合不同領域的設計模式誕生,使程序的開發更為的簡潔和高效。
參考文獻
[1] GANNA E, HELM R, JOHNSON R, et al. Oesign pattems: elements of reusable object?oriented software [M]. Massachusetts: Addison Wesley Publishing Company Inc, 1995.
[2] BUSCHMANN Frank, MEUNIER Regine, ROHNERT Hans, et al. Pattern?oriented software architecture?a system of patterns [M]. Hoboken, USA: John Wiley Sons, 1996.
[3] KIRCHER Michael, JAIN Prashant. Pattern?oriented software architecture: patterns for resource management, volume 3 [M]. Hoboken, USA: John Wiley Sons, 2004.
[4] 汪永松.Android平臺開發之旅[M].北京:機械工業出版社, 2010.
[5] 李興華.Android開發實戰經典[M].北京:清華大學出版社, 2012.
[6] 饒一梅,王治寶,王秀峰.軟件設計模式及其在Java類庫中的典型實現[J].計算機工程與應用,2002,38(4):70?72.
[7] 王力生,鄭飛.設計模式在中國移動巡檢平臺中的應用[J].計算機應用,2006(6):3?5.
[8] 鄧玉龍.MVC設計模式在電子商務系統中的研究與應用[J].南京郵電學院學報,2002,22(2):90?92.
[9] 柯元旦.Android內核剖析[M].北京:電子工業出版社,2011.
[10] 曾健平,邵艷潔.Android 系統架構及應用程序開發研究[J].微計算機信息,2011,27(9):23?25.
[11] 鮑可進,彭釗.一種擴展的Android 應用權限管理模型[J].計算機工程,2012,38(18):17?19.
[12] 劉海巖,鎖志海.設計模式及其在軟件設計中的應用研究[J].西安交通大學學報,2005,35(10):32?35.
[13] 弋改珍,解爭龍,張琨.基于Android的火車時刻表查詢系統設計與實現[J].現代電子技術,2012,35(19):41?44.
[14] 張正政,林耀榮.基于Android系統的影音播放器開發[J].現代電子技術,2011,34(2):5?8.
[15] 沈文瑞,曾連蓀,楊臻.基于Android平臺的校園導覽軟件設計[J].電子設計工程,2012(9):26?28.