Лучший способ организовать класс Singleton и класс, который обрабатывает его в проекте? - PullRequest
0 голосов
/ 27 августа 2018

Скажем, у меня есть класс Settings, который я хочу сохранить как 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?)

1 Ответ

0 голосов
/ 27 августа 2018

Сначала вы создаете новый экземпляр настроек каждый раз, когда вызываете Settings.getInstance (). Во-вторых, не должен ли быть ваш SettingsManager Singleton? В противном случае настройки будут меняться каждый раз, когда вы вызываете SettingsManager.initSettings (). Как часто это будет называться? (Я написал это как ответ, потому что у меня пока недостаточно репутации, чтобы написать комментарий.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...