簡體   English   中英

設置包裝器類是一種好習慣嗎?

[英]Is setting wrapper class a good practice?

我在考慮如何包裝所有設置,例如,我使用了一次甚至更多次。 讓我們考慮一下抽象性。

class WholeApplicationSettingsInHere{
    private static boolean setting1, setting2;

    WholeApplicationSettingsInHere(){set defaults}

    public static boolean getSetting1(){return setting1}
    public static void setSetting1(setting1){set setting1}

    public static boolean getSetting2(){return setting2}
    public static void setSetting2(setting2){set setting2}

    ...
}

class One(){
/*No fields in here, except private fields*/
    methodOne(){use variables from WholeApplicationSettingsInHere class}
    methodTwo(){}
}

class Two(){
/*No fields in here, except private fields*/
    methodOne(){use variables from WholeApplicationSettingsInHere class}
    methodTwo(){}
}

我的問題是,這樣做是否是一種好習慣?

您應該使用PreferenceManagerSharedPreferences來存儲和檢索用戶首選項。 在類中使用靜態布爾值似乎並不是一個好主意。

只需使用您的方法創建一個簡單的類,例如:

public class PreferencesHelper {

    private PreferencesHelper() {} // No instantiation

    public static boolean getSetting1(Context context) {
        return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREFERENCE_KEY, defaultValue);
    }

    public static void setSetting1(Context context, boolean value) {
       Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
       editor.putBoolean(PREFERENCE_KEY, value);
       editor.apply();
    }

}

最后,回答您的問題:是的,如果您執行上述代碼,則可能是一個好習慣。 這樣,您就不可能使首選項鍵分散在整個應用程序中,並且使代碼更易於閱讀。

話雖如此,如果您曾經需要一次設置多個首選項的情況,那么在您需要調用setSetting1()setSetting2()setSetting3()等情況下會有些浪費。一遍又一遍地重新創建對象。 在這種情況下,只需獲取Edtior對象,放置所有更改,然后應用更改。

很難回答“這是一個好習慣”,因為沒有一個明確的答案。 這完全取決於您的上下文。 您可能需要提供一個MCVE ,它可以更准確地准確反映您在做什么。

我要說的是,將那些變量和方法靜態化是一個非常可怕的想法-如果您想要設置類的兩個實例,接下來會發生什么?

而且,在您說“我只需要一個設置實例”之前,您可能無法提前知道。 這是對static關鍵字的濫用。

到那時,為什么不只使用Properties類的實例呢?

暫無
暫無

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

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