簡體   English   中英

如何使用“單元素枚舉類型”使這個類成為單例?

[英]How to use the “single-element enum type” to make this class a singleton?

我有這個類,我用這個單獨的方式:

FlagOfficer.instance().someVariable

這是該類的當前實現:

public class FlagOfficer {

    public FlagOfficer() {

    }

    static FlagOfficer flagOfficer = null;

    public static FlagOfficer instance() {
        if (flagOfficer == null) {
            flagOfficer = new FlagOfficer();
        }
        return flagOfficer;
    }

    public boolean getLastBackupDate;
    public boolean syncProcessStartedOnce;
}

我現在正在閱讀“Effective Java”一書,他們說實現單例模式的最佳方法是使用單元素枚舉類型

以下是本書的一個示例:

public enum Elvis {
    INSTANCE;
    public void leaveTheBuilding() { ... }
}

那么如何轉換我的類以便它使用這種模式呢? 我以后如何使用它?

public enum FlagOfficer {
    // Enum instances/values should be declared first.
    // Use INSTANCE(arg1, ..) if constructor accepts agruments.
    INSTANCE; 

    // Constructor can accept arguments as well.
    private FlagOfficer() {

    }

    private Date lastBackupDate;
    private boolean syncProcessStartedOnce;

    public Date getLastBackupDate() {
        return lastBackupDate;
    }

    public boolean isSyncProcessStartedOnce() {
        return syncProcessStartedOnce;
    }
 }

用法:

FlagOfficer fo = FlagOfficer.INSTANCE;

暫無
暫無

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

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