簡體   English   中英

如何在我的應用程序中使用一個對象實例

[英]how to use one instance of object throughout my application

我有一個部門類。我想在應用程序加載(控制台應用程序)時創建一個具有HR值的實例部門和一個具有Admin值的部門實例,然后我想在我的程序中使用這些實例。例如,我從csv文件中讀取一個雇員,然后創建一個雇員對象。現在要創建一個雇員對象,我必須使用部門對象。我必須根據部門的值設置部門的適當值從文件讀取。如何執行

您正在尋找單例模式的實例,可以通過將構造函數聲明為私有並在getter中保持靜態引用變量的初始化來實現。 就像是:

private static Department hr = null;

private Department() {
}

public static synchronized Department getHRInstance() {
    if (null == hr) {
        hr = new Department();
    }
    return hr;
}

從代碼的其余部分,您可以調用Department.getHRDepartment() ,對於管理部門也是如此,該部門僅映射到第二個靜態變量。 (對於兩個以上的單例,您可能希望使用映射存儲實例或使用Enum類定義單例。)

單例實例的缺點是依賴注入很難完成,這使得構建JUnit測試變得困難或不可能。 對於大多數使用的單例模式,實際上最好在初始化應用程序時初始化“單例”實例,並通過它們的構造函數將它們傳遞給類,或者通過創建對象工廠來創建對象,該對象工廠在創建其對象后傳遞單例引用,從而將它們傳遞給類實例。

不是直接回答您的問題,而是您的表述使我認為也許您想要的是一個enum 如果您的department是一個簡單的價值觀,沒有復雜的狀態或行為,那么它可能是枚舉的一個很好的候選人。

看看枚舉教程: http : //download.oracle.com/javase/tutorial/java/javaOO/enum.html

您需要一個單例。 有多種方法可以實現它,這是rsp發布的最廣為人知的解決方案。 一個不錯的技巧是讓枚舉只有一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM