我正在開發兩個具有相似但邏輯不相同的Android應用程序,並且我想在它們之間共享代碼。目前,我爲每個應用程序都有一個項目,還有一個用於共享類的附加項目。共享類項目是一個庫,並且應用程序項目鏈接到此庫。在項目之間共享Singleton邏輯,並對每個項目進行修改
我遇到的問題是一個負責從服務器獲取數據並緩存該數據的類。這個類被稱爲DataSingleton。獲取數據的邏輯對於兩個應用程序都是一樣的,有些則不同。我的問題是如何設計這個類來支持這個。
這裏有一些限制:
- 數據辛格爾頓應該是單身,它的名字所暗示的。
- 共享項目中的一些共享邏輯使用DataSingleton,因此DataSingleton也必須位於共享類項目中(否則我會發生構建錯誤)。
- 我不想將應用程序特定的邏輯放在共享項目中。
如果這是C++,我會有2個不同的類名DataSingleton - 每個應用程序中有一個 - 然後讓鏈接器連接正確的類。這兩個類都可以從一些通用基類繼承,來處理共享邏輯的代碼共享。我可以在Java中做類似的事嗎?
如果有幫助,我可以在應用程序啓動時用一些參數來「初始化」DataSingleton,這將決定它的行爲。我想過要給它傳遞一個類,但是那個類沒有權限訪問DataSingleton的私有成員。
什麼是「正確」的方式來做到這一點?
我有一些使用DataSingleton的共享邏輯。它將如何知道現在使用哪個類? –
您必須更清楚地解釋「共享邏輯」的含義。假設你的應用程序不互相交互,任何時候都不會有2個'DataSingleton',如果運行ProjectA,那麼如果ProjectB運行,共享邏輯將使用擴展的ProjectA的'DataSingleton',那麼共享邏輯將使用擴展ProjectB的'DataSingleton' –
如果您需要獨立運行共享項目(儘管您說它只用作庫),您可以在'AbstractDataSingleton'旁邊創建一個'DataSingleton',它將其擴展幷包含必要的數據並且可以單獨用於Shared項目的需求,但不會被ProjectA或ProjectB使用 –