基于MVC模式的安卓系統工程結構設計

隨著安卓系統的快速發展,基于安卓系統的軟件開發越來越流行。根據Kantar WorldPennel發布的最新數據,IOS系統在中國市場的份額為27.1%,而Android系統的市場份額則高達71.4%。Android系統及應用主要是用在目前智能終端設備上,例如:手機、PAD等,不僅可以實現語音視頻的基礎通信需求,而且還可以滿足現場工業控制的功能要求。本文主要是基于MVC模式來設計安卓系統工程結構。從而降低安卓系統開發人員的開發難度,提高開發效率。
MVC是三個單詞的縮寫,分別為: 模型(Model),視圖(View)和控制Controller)。MVC模式的目的就是實現Web系統的職能分工。采用MVC模式設計的架構具有低耦合性、代碼重用性等特點,能有效地降低軟件的開發成本,有利于提高軟件的可維護性和工程化管理。MVC模式有諸多優勢,將MVC模式應用到安卓系統項目的開發中,必然可以提高安卓項目的開發質量,降低維護難度。
在安卓系統項目的開發過程中,沒有一個明確的代碼開發規范和結構,會導致開發的系統模塊難以維護,各個模塊之間處于高耦合度狀態。會給后期的維護和升級帶來很大的困難。
在安卓項目的開發中使用MVC思想來設計項目的結構,能使得模塊的分工明確,代碼可復用性高,模塊之間的耦合度降低,有利于代碼的修改和移植,整個系統的結構清晰。安卓系統的MVC實現思路如圖1所示。

圖1 Android工程結構
在上圖中將工程結構分為交互層、控制器層、業務層、中間數據池、工具類、文件系統、數據庫、通訊模塊、服務器端9部分。
交互層:負責客戶端的頁面展示和人機交互。
控制器層:負責調用業務層方法和將業務層處理結果返回給交互層,是交互層和業務層的橋梁。
業務層:負責處理系統的主要業務邏輯。
工具類:負責向業務層提供支持,包括對客戶端數據庫的訪問以及系統的文件的操作。
中間數據池:用于緩存系統中的臨時數據,提供給業務層做臨時數據支持。
通訊模塊:Android系統的通訊主要分為兩種類型,一種是自定義通訊協議,通過Socket模式來達到與服務器交互。另一種是調用WebService接口來與服務器交互。通訊模塊負責系統的數據傳輸與通訊,對整個android應用提供支持。
服務器端:為Android客戶端提供業務支持,是整個系統的核心部分。
整體安卓系統設計結構的實現思路為:用戶通過Activtiy所展示的頁面與系統做交互,Activity根據用戶所選擇的操作去告訴控制器調用業務層的哪個方法,根據控制器調用業務層返回的結果刷新Activity。控制器在整個程序中負責響應Activity的事件請求并調用業務層的方法,在業務層調用結束后通知Activity刷新或是跳轉。如果調用業務層有異常情況,控制器負責將錯誤信息返回給Activity通知用戶。業務層負責處理整個客戶端的業務邏輯處理。業務層的主要工作還是將客戶端從服務器獲取的數據進行轉換或處理。工具類負責對業務層的工具支持。比如說文件的訪問、復制、修改、客戶端數據庫的連接、增刪改查、客戶端數據加密等。中間數據池存儲一些在軟件運行過程中的臨時數據或是業務層在處理業務時常需要的數據。中間數據池是以Java中Map的對象存儲數據,即鍵值對。中間數據池的好處是其中的數據隨時都可以被訪問,沒有訪問范圍,可以避免不同Activity之間跳轉攜帶數據的繁瑣操作。缺點是數據的Key使用需要有規范的寫法,否則有可能導致數據池內數據混亂,造成程序的業務處理錯誤。還有就是當客戶端程序出現無法恢復的錯誤時,數據池會隨之銷毀,用戶需要重新打開程序。通訊模塊是客戶端與服務器溝通的橋梁,通訊模塊負責將客戶端的數據傳輸到服務器和接收服務器的響應和數據。是客戶端與服務器的溝通橋梁。
在Android開發過程中,采用這種系統結構符合MVC的設計思想,整個系統不混亂臃腫,各個模塊都有其單獨的功能。工程維護、調試和擴展起來也比較容易。其中工具類、數據池在其他工程中也可以進行重用。

圖2 Android工程結構圖

圖3 登錄序列圖
下面以模擬系統登錄業務為例,結合上述Android工程的MVC設計思想進行實例解析。工程結構如圖2所示。
在項目結構中,communication包為通訊模塊,根據系統的服務器支持不同,可以選擇Socket通訊模式或WebService調用。Service包為系統的業務實現類。Support包下包括中間數據池和控制器。Utils包為工具類。View包下放所有頁面的類。
根據登錄的業務需求結合項目的結構?設計登錄的序列圖如圖3所示。
當用戶在登錄Activity輸入登錄信息點擊確定后,LoginActivity先將登錄信息放入數據池,然后通知控制器調用業務層的登錄方法。業務層在接收到控制器的調用后從數據池中取出登錄信息并做處理,然后通知通訊模塊去調用服務器的登錄方法。通訊模塊負責調用服務器的登錄方法并將服務器返回的數據傳回給業務層,業務層再將數據放回到中間數據池。這時控制器從返回的數據判斷登錄方法執行的狀態是成功還是出現異常。如果出現異常則給用戶進行提示,如果正常跳轉到應用首頁,完成整個登錄操作。
在本文中敘述了安卓項目的MVC設計思想,以登錄為實例分析了如何將MVC設計思想應用到實際的開發過程中。在安卓系統的開發結構中應用這種MVC設計模式,可以使開發人員的開發思路清晰,也使得系統各個模塊之間分工明確。應用基于MVC開發模式的系統結構可以極大地降低安卓應用軟件后期維護難度,具有高可擴展性。從而延長了軟件的生命周期。
10.3969/j.issn.1001- 8972.2016.19.019