首页 > 解决方案 > 组织 Singleton 类和在项目中处理它的类的最佳方法?

问题描述

假设我有一个设置类,我想将其保留为单例,以便所有其他服务/类等都可以访问相同的东西。

public class Settings {
    private static Settings settings;

    public static Settings getInstance() {
        if (settings == null) {
            settings = new Settings();
        }
        return settings;
    }
    // More stuff
}

现在说我有一个类,其中包含使用此模型处理“设置”数据的所有静态方法。

public class SettingsManager() {
    public static Settings initSettings() {
        // Pull some data from the db
        String foo = db.getSomeData();
        return Settings.getInstance().setFoo(foo); // etc
    }
}
// Other static methods to update, etc.

我不想将逻辑SettingsManager放入Settings其中,因为它将不再是模型,因为它将包含查询数据库等的逻辑。

SettingsManager将其作为内部类保留是更好的方法,Settings还是使其成为自己的类更有意义?

我想考虑后者,但如果是这样,我会把SettingsManager课程放在哪里?什么包?(com.myproject.models,com.myproject.somethingelse?)

标签: javamodel-view-controllersoftware-design

解决方案


首先,每次调用 Settings.getInstance() 时都会创建一个新的 Settings 实例。其次,你的 SettingsManager 不应该是 Singleton 吗?否则,每次调用 SettingsManager.initSettings() 时,设置都会被更改。多久会调用一次?(我写这个作为答案是因为我还没有足够的声誉来写评论。)


推荐阅读