组织 Singleton class 和在项目中处理它的 class 的最佳方式?

Best way to organize Singleton class and a class that handles it in a project?

假设我有一个设置 class,我想将其保留为单例,这样所有其他 services/classes 等都可以访问相同的东西。

public class Settings {
    private static Settings settings;

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

现在假设我有一个 class,其中包含使用此模型处理 "Settings" 数据的所有静态方法。

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 的内部 class 是更好的方法,还是让它成为自己的 class 更有意义?

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

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