使用Android庫項目時適用的架構模式

在Android庫項目(Library Project)發佈之前,在不同Android項目間共享代碼是很困難甚至是不可能的。通常使用JAR包共享Java代碼,但是卻無法共享那些需要引用資源文件的代碼。共享Activity或者自定義視圖是不可能的,因爲開發者無法把資源文件添加到JAR包中,供其它應用程序使用。爲了解決共享代碼的問題,Android庫項目應運而生了。

在這個demo裏,我們會展示庫項目的使用方法,並且會創建一個具有登陸界面的小應用程序作爲本demo的示例程序,該程序劃分爲以下三層結構:
1、後臺邏輯和模型(JAR文件)
2、Android庫項目
3、Android應用程序

後臺邏輯和模型

本層是一個簡單的JAR文件,該文件可以包含業務邏輯,並且不使用Android平臺特有的代碼。我們把請求服務器的代碼、業務對象以及業務邏輯放置在該層。在示例程序中,有一個可以編譯成JAR文件的項目(Login),用於實現具體的登陸功能。

在Login項目中,Login類並不依賴於Android平臺。該項目輸出文件是一個JAR包,可以將該JAR包引入到Android應用程序中。在Java項目中實現業務邏輯意味着可以直接使用JUnit測試所有代碼,這樣避免了構建Android測試環境所帶來的麻煩。此外,代碼分成可以使不同技術背景的開發者專注於各自所擅長的層。

Android庫項目

Android庫項目類似於JAR包,但是卻可以使用Android資源文件。將Android庫項目設置爲某個應用程序的依賴項目時,該應用程序就擁有了第二個R類,該R類中包含了庫項目的資源ID信息,因此我們便可以在代碼中使用庫項目所屬的資源文件。本層包含的Android平臺特定的Activity、自定義視圖或者Service等都是可以複用的。

庫項目可以使用上一小節提到的JAR包作爲依賴庫。在本例中,我們便將JAR包設置爲庫項目的依賴庫。通過這種方式,開發者便擁有了一個可以用於任何Android項目,並且模塊化、易維護的庫。

Android應用程序

最終的Android應用程序通過後臺邏輯和模型層的JAR包處理與平臺無關的業務邏輯,通過Android庫項目處理與Android平臺相關的邏輯。

在本層,我們既可以使用JAR包中的代碼,也可以使用Android庫項目中的代碼。此時開發應用程序,只需要處理代碼在不同層的分佈問題。

本demo對使用庫項目時適用的架構設計作了簡要介紹。代碼可重用且易維護是難以實現的,但是現在有了Android庫項目,一切皆有可能。

代碼地址

發佈了86 篇原創文章 · 獲贊 6 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章