2008-10-20 58 views
6

我曾經爲我的應用程序提供了自定義首選項類。對於我的下一個愛好項目,我想切換到Preferences API。但put和get函數需要一個默認值,我不想在整個源文件中傳播默認值。即使我的項目很小,我無法想象在整個源代碼中都會更改默認值。你們如何使用api?我想在另一個類中包裝首選項api,但是使用API​​的重點是什麼,因爲它只消除了將文件保存到磁盤的負擔,而使用序列化並不那麼困難?我錯過了這個觀點嗎?封裝Java首選項API

回答

1

將所有的默認設置保存在一個類中是不是很困難,以至於它們不會亂丟你的代碼?

我在最近的項目中使用了commons configuration。我研究過Java Preferences API,但我喜歡Commons項目的靈活性。而且您不必指定默認值!

2

你在這裏混合了一些概念。代碼中給出的默認值應該特定於當地情況,作爲「合理的默認值」。如果您想擁有應用程序範圍的默認值,那麼您需要一個首選提供程序,該提供程序允許您同時掛接默認首選項和重疊的用戶首選項。本身可能是一個有價值的項目。

噢,「合理的默認值」是避免不需要配置的好方法,但允許用戶或打包者在需要時提供更好的值。

@comment,我想我明白了。

'本地情況'我的意思是在代碼的上下文中。對於你的GUI,你需要一個顯示值來代表線程正在使用的值。因此我會使用Worker.DEFAULT_TIMEOUT之類的東西。您的工作人員將在內部使用與默認值相同的值。通過這種方式,您可以在設置工作人員的行爲時檢索配置的值或工人的默認值。

1

您可以將默認值放入您在.jar文件(或專用類或具有常量的接口)中捆綁的.preferences文件中。

我使用它作爲窗口位置/大小,記住選擇文件的默認文件夾,上次打開的文件和這樣的瑣事。我可以想到一些有趣的事情,你可以通過偏好API「免費」獲得:

  • 以OS推薦的方式做事;操作系統可能不允許您在應用程序文件夾中寫入「設置文件」,並且用戶不喜歡詢問他們想要保存設置的磁盤上的位置,並且您不希望爲每個平臺實現您的定製邏輯
  • 您的數據保存爲單獨
  • 每個OS用戶的方式,讓用戶的數據,即使你的應用被卸載(或在升級過程中)
  • 不需要數據庫或訪問文件系統

另外,我不喜歡序列化,不建議這樣做。序列化意味着在新版本的應用程序中更改課程時必須小心。