Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Какой паттерн использовать?


Автор: Royan 7.4.2009, 16:02
Положим есть такой код
Код

public abstract class AbstractClass {
    private static boolean fooSwitch = false;
    public void init()  {
        fooSwitch = SettingsManager.getInstance().getAsBoolean(Properties.FOOFIELD);
    }
}


SettingsManager - синглетон, который при запуске приложения получает настройки, которые в свою очередь подкачиваются из базы.

У меня есть одно важное поле (fooSwitch), которое будет использоваться и тут и там, НО только в пределах одной иерархии классов, конкретно только наследниками AbstractClass. 

Вопрос: Какой паттерн или лучшее возможное решение вы предложите, чтобы расшарить это поле между наследниками AbstractClass'а? Важно понимать я могу присвоить значение этому полю только в методе init() и при этом мне хочется, чтобы максимальное количество классов получило к нему доступ readonly как только завершится выполнение метода AbstractClass#init()

Автор: v2v 7.4.2009, 19:32

Метод инит вызовите в единственном конструкторе АбстрактКласса, который должен обязательно вызыватся наследниками.
А что бы дать ридонли доступ, создайте для своего свойства ещё некий протектед геттер ...

Автор: Royan 8.4.2009, 10:46
Цитата(v2v @  7.4.2009,  16:32 Найти цитируемый пост)
Метод инит вызовите в единственном конструкторе АбстрактКласса, который должен обязательно вызыватся наследниками.
А что бы дать ридонли доступ, создайте для своего свойства ещё некий протектед геттер ... 

Тут есть такая проблема, метод init() вызывается при инициализации приложения, поэтому похоже единственный возможный для меня вариант действий - это создать protected static геттер и вызывать его от случая к случаю

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)