我有一個部門類。我想創建一個值爲HR的實例部門和一個值爲Admin的部門實例,當我的應用程序加載時(控制檯應用程序),然後我想要在我的程序中使用這些實例。我可以在不同的類中使用相同的實例嗎?例如,我從csv文件讀取一個員工,然後創建一個員工對象。現在創建一個員工對象,我必須使用部門對象。必須根據從文件中讀取的部門值設置適當的部門值。如何執行如何在整個應用程序中使用對象的一個實例
0
A
回答
2
您正在尋找單例模式的實例,您可以通過聲明構造函數爲private並保留靜態引用變量在getter中初始化。喜歡的東西:
private static Department hr = null;
private Department() {
}
public static synchronized Department getHRInstance() {
if (null == hr) {
hr = new Department();
}
return hr;
}
從您的代碼的其餘部分,你可以撥打Department.getHRDepartment()
,同樣的管理部門,它只是映射到第二靜態變量。 (對於超過2個單例,您可能想要使用映射來存儲實例或使用Enum
類來定義單例。)
單例實例具有依賴注入難以完成的缺點,使得構建JUnit測試困難或不可能。對於大多數單例模式,實際上最好是初始化「單例」實例,同時初始化應用程序並通過傳遞它們通過構造函數傳遞給它們的類,或者創建一個在創建對象之後傳遞單例引用的對象工廠實例。
1
不是直接回答你的問題,但你的表述讓我覺得你可能想要的是enum
。如果你的department
是一個簡單的值,沒有複雜的狀態或行爲,它可能是一個很好的候選人的枚舉。
看一看枚舉教程:http://download.oracle.com/javase/tutorial/java/javaOO/enum.html
1
你需要一個Singleton。有幾種方法可以實現它,這是rsp發佈的最廣爲人知的解決方案。一個很好的竅門是隻有一個值的枚舉。
相關問題
- 1. 如何在整個應用程序中使對象使用?
- 2. 如何實例化一個對象並在整個程序中使用這個對象?
- 3. 如何存儲在上下文中SessionFactory對象,並使用同一個對象的整個應用程序
- 4. 如何在整個應用程序中訪問變量/對象?
- 5. 使用Spring框架在整個應用程序中堅持一個對象
- 6. MVC4 C#項目:在應用程序提供一個對象的單個實例
- 7. 如何在兩個獨立的應用程序中使用一個Java對象?
- 8. 從一個實例運行另一個應用程序實例。
- 9. 如何在應用程序中創建一個CLLocationManager實例?
- 10. 使用一個空文件有一個應用程序實例
- 11. 僅保留整個應用程序中的每個活動的一個實例
- 12. PHP - 在整個應用程序中使類對象全局化?
- 13. 使用ObjectDataProvider實例化一個對象
- 14. 使用實例化一個Class對象
- 15. 如何只啓用我的應用程序的一個實例
- 16. 在一個應用程序中的兩個RCTRootView實例
- 17. 如何在可可應用程序中實現多個實例
- 18. 如何實現一個Singleton在應用程序中使用DLL
- 19. 如何使用launchd啓動應用程序的多個實例?
- 20. 如何在一個測試中啓動應用程序的多個實例
- 21. 在一個程序的多個實例中使用flocks
- 22. 如何在雲中創建應用程序的多個實例
- 23. 在整個應用程序中都需要的對象
- 24. 如何在Codeigniter中用結果對象實例化一個類?
- 25. 如何使用Autofac注入同一對象的兩個實例?
- 26. 如何聲明一個對象並使其在整個rails應用程序中都可用?
- 27. 如何在整個應用程序中使用一個數據庫連接對象?
- 28. 調用對象的一個實例
- 29. 如何在Clojure中創建一個「對象」的多個實例?
- 30. module.exports對象實例的其他應用程序使用
+1意味着缺點非常清晰。優秀的答案。 (Static)Singletons ** s * * * * k **這麼多。 – whiskeysierra 2010-08-13 22:36:01