2012-08-11 146 views
1

我有很多.Net開發背後,我的大多數應用程序分層在用戶界面,服務,BL和DAL ..和數據庫層。每一層通常都是自己的項目,所有這些項目都相互引用,使數據流通過解決方案。Android應用程序架構

我是Java和Android的全新品牌。看起來是我們開發了一個輸出文件,因此開發了一個項目。我會爲每個圖層使用不同的文件夾嗎?也許是一個ServiceLayer文件夾,裏面有類,然後是BusinessLayer文件夾,裏面有業務類?

什麼是通常的結構來保持代碼清潔和可維護?我不是因爲專業的原因這樣做(還沒有)。這純粹是爲了學習。

編輯:該應用程序只是一個簡單的應用程序,允許用戶每天輸入關於某事的數據(簡單的用戶界面,可能有幾個下拉式的loookups從數據庫中獲取'參考數據'),並允許用戶選擇一些內容,輸入一些細節,並存儲到內置的SQLite數據庫中。

一旦工作,我想將數據同步到一個在線數據庫(我將寫一個託管在.Net託管系統(GoDaddy,現在)上的web服務),它將存儲最新的數據,並提供一個web前端如果用戶可以訪問筆記本電腦或PC,則可以提供更簡單的數據輸入)。所以,某種Web服務會刷新我的應用程序,並將更新發送到服務器。

+0

這相當依賴於你正在建設什麼樣的應用程序。你能否提供一些見解? (這取決於你想達到什麼變化很大) – Jon 2012-08-11 23:12:23

+0

謝謝。抱歉!我已經用你問的細節更新了這個問題。從我這裏監督。謝謝。 – Craig 2012-08-11 23:21:36

回答

2

首先,它取決於你在做什麼應用。

您應該對用戶如何使用應用程序進行文字或原理圖描述。修復每種可能的情況。放下稍後將用於測試的示例。

決定什麼屬於功能和什麼 - 對可變配置。從場景中提取功能和數據實體。

從場景中決定你的應用將是什麼。它是服務,活動,小部件,甚至內容提供者還是複雜系統,包括一些不同的組件。根據情景提出您的決定。

在複雜系統的情況下,在應用程序組件之間分配功能和數據實體。列出組件和它們是什麼(活動或其他)。

將UI組件列表與描述他們所做的事情(而不是如何)這些將在稍後的小部件和活動或片段或佈局。

爲UI組件製作草稿版式。從一個簡單的傳球到另一個。看看用戶界面。回到場景中,並使用草稿用戶界面播放所有場景。所有UI組件和類放入一個包或層次結構中。

列出數據實體。決定什麼是什麼。將它們規劃爲數據庫或不同數據庫中的集合或表格。將它們作爲類,將它們放入另一個包或另一個包的層次結構中。這裏還提供了DB助手 - 通過SQL與DB交談的類。

製作一個測試類,用於向測試數據填入UI和數據實體並啓動它們。

適配器不必是公共的,因爲它們僅在其父組件GroupView中使用。所以,通常沒有適配器的文件。

不要把所有的全局變量放到特殊的靜態類中 - 這是一個不好的做法。你在混合代碼和配置。

配置數據放入recources中。如果其中一些比較複雜,則使用XML源和解析器。將資源數據的讀者變爲全局變量。不是所有的都是靜態的!例如,它們可能屬於主要的Activity實例。

不要在代碼中使用不可配置的常量!可能是,只有你的名字:-)。有時每隔一個常數就會變得不恆定。

總是這樣做:寫點東西 - 把東西連接到批量 - 爲這個新東西添加測試 - 測試這個新的 - 測試批量 - 重複。只有小步!

+0

謝謝Basbous。我做了很多你說的話,但真的很喜歡你的設計方法。謝謝。我的應用程序已經作爲一個小的.Net應用程序生存我想用Java重做它作爲學習練習。所以數據實體...甚至是數據庫的設計。在我的.Net世界中,我讓DAL執行數據訪問,獲取數據,並將它們存儲在與表匹配的類中(以及用於更復雜的數據提取的自定義類),然後將這些對象上下傳遞。這是在Java中使用的做法嗎? – Craig 2012-08-11 23:28:20

+0

@Craig是的,你可以在Java中實現你的結構,我是ex dot net開發者,我曾經把我的經驗從dot net移植到java, 創建適配器包,實體包,服務和廣播包以及活動包,所以你用同樣的方式在網絡中管理代碼,我可以幫你嗎? – Basbous 2012-08-11 23:31:36