设置包装类是一个好习惯吗?

时间:2014-12-22 13:14:57

标签: java android

我在考虑如何包装所有设置,例如我使用一次甚至更多。让我们想一点抽象。

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(){}
}

我的问题是,以这种方式做事是否是一种好习惯?

2 个答案:

答案 0 :(得分:1)

您应该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对象,进行所有更改,然后应用更改。

答案 1 :(得分:0)

很难回答"这是一个很好的做法"因为没有一个确定的答案。这完全取决于您的背景。您可能希望提供一个MCVE,以更准确地反映您正在做的事情。

我会说将这些变量和方法设置为静态是一个非常可怕的想法 - 如果您想要设置类的两个实例,会发生什么?

在你说&#34之前,我只需要一个设置实例" - 你不能提前知道。这是对static关键字的误用。

在那一点上 - 为什么不只使用Properties类的实例?