今天我們就Android開發中的一些設計模式做一些基礎性的掌握,本次就Android項目的架構設計相關內容做分析:
1. 靜態Factory 方法
靜態Factory 方法可以算是Factory 方法加單例模式的整合在Android平台上,由於Android的Context可以很好的傳遞執行個體,靜態Factory 方法可以提到傳統的類構造器,對於一些邏輯的服務提供類可以考慮這樣的設計,比如檔案下載、圖片裁剪等操作。
2. Java的類存取權限
對於程式的可靠性而言,成員變數盡量私人,通過暴漏公開的方法來訪問這些私人成員,提供類似getXXX和setXXX這樣的方法,不僅是Java,這點C#對於屬性的操作概念文件在Dot Net上已經深入人心,好處就是可以阻止繼承後的訪問換亂問題。
3. 使用枚舉替代常量
Java在JDK 1.5開始加入了enum枚舉類,相對於常規的final int這樣的定義一些常量更簡單安全,畢竟常量是一堆類似整形的數值,列印起來沒有過多的意義,枚舉對於繼承後訪問的清晰度可以很好的杜絕隱患發生。
4. 使用列表優先於數組
Java的集合類很方便,使用List類的列表在開銷上比Object [ ] 這樣的數組大,但是對於泛型的支援而言更好用強大。也可以避免一些不必要的錯誤,比如
cwjObject [] obj= new int[1];
obj[1] = "android開發網測試"; //這樣會在運行時拋出類似ArrayStoreException這樣的異常。
而使用列表則為:
List<cwjObject> obj=new ArrayList<int>();
obj.add("android123測試"); // 由於傳入列表的是字串,和構造時類型的int不同,在編譯時間就提示錯誤,可以避免一些不必要的情況發生。
5. Java的foreach代替for
Java的foreach仍然使用for來寫,這點和C#直接用foreach關鍵字有點不同,但是使用方法是一樣的,除了更簡潔外,其實foreach比傳統的for更加最佳化,比如傳統的for第二個限制位,一般訪問屬性或方法,比如說
for (int x=0;x<obj.size();x++) //這句的限制符號每次都會執行obj.size() 方法,當然Android開發網相信size()方法訪問的是一個數組的length屬性,活著是
for (int y=0;y<obj.length;y++) //這裡同樣每次迴圈都執行obj.length對於Java VM的開銷主要由這個obj的長度決定的,而Android SDK文檔的推薦方式是
int nSize=obj.size() 或 int nSize=obj.length
for (int z=0;z<nSize;z++) ,但是這還不是最優的方法,下面Android123給大家更好的foreach方式的替代方法:
for (SmartObject singleObj : SmartObjectArray)
{
singleObj.setName("cwj"); 或 singleObject.strName="cwj";
}
有關Android開發中的Java設計模式技巧,希望國內Android開發人員打好Java基礎,別紮堆實現鋪天蓋地的應用,目前不說惡意軟體問題,就大部分的軟體設計品質令人擔憂,還有很多應用基本上就是J2EE或J2SE開源項目的移植版。