Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) / 14 сообщений из 14, страница 1 из 1
27.12.2012, 17:38:21
    #38095286
pgm300
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
Всем привет)

Хочется узнать мнение коллег

К примеру есть программа, несколько форм с контролами, которая отслеживает поведение чего нибудь и отображает. Данные пишет в лог, читает из лога и т.д. Имеем настройки форм (размер, состав элементов), настройки директорий, интервал отслеживаний и т.д. Всю эту кучу настроек храним в Properties (файл настроек).

При запуске программы инициализируем объект типа properties, читаем опции из файла и затем ссылку передаем другим объектам (они уже читают нужные для них свойства).

Но к примеру если файл опций по прежнему один, а форм штук 20 и еще с десяток объектов чьи свойства хранятся, мы что в каждом конструкторе должны этот параметр предусмотреть чтоб передать ссылку на propertues? А если файлов свойств или таких глобальных объектов - несколько, мы будем в каждом конструкторе уже несколько параметров иметь? Кажется как то некрасиво.

А если к примеру не передавать ссылку а каждый объект пусть сам инициализирует для себя и имеет свой объект properties (все объекты читают один и тот же файл опций но вызывая конструктор properties а не получая ссылку).
Этот вариант тоже какой то...

Какие еще есть варианты? Надеюсь понятно изложил. Кто как решал такой вопрос?
...
Рейтинг: 0 / 0
27.12.2012, 20:15:30
    #38095436
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
В Java нет глобальных переменных. Но всегда есть стартовый экземпляр main-класса
в котором можно 1 раз инициализировать Properties и передавать их через конструкторы,
фабрики или статические конструкторы в контейнерные классы.

Альтернативно, можно прицепить свойства к какому-то уже существующему
объекту. Например к System.properties.

Можно также свой property-класс сделать Singleton-ом и вызывать его
в любом месте.
...
Рейтинг: 0 / 0
27.12.2012, 20:39:58
    #38095451
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
нафига все это когда есть стандартные java.util.Preferences еще с версии 1.5, если не изменяет память
...
Рейтинг: 0 / 0
27.12.2012, 20:52:55
    #38095464
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
Еще оперативнее. Если имена свойств не меняются - захардкодить их в отдельный класс
и статически инициировать.
...
Рейтинг: 0 / 0
28.12.2012, 02:21:17
    #38095633
pgm300
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
mayton,
Имеется в виду в отдельном классе инициализировать (скажем из файла) все переменные объявленные как public static? Ну да это вариант.
...
Рейтинг: 0 / 0
28.12.2012, 02:23:10
    #38095634
pgm300
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
mayton,
Вариант с синглтоном и инициализацией в main я и использую.
...
Рейтинг: 0 / 0
28.12.2012, 02:29:49
    #38095636
pgm300
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
забыл ник,
Имеется в виду организация точки доступа к свойствам. Если через preferences хранить их например в системном реестре, все равно ведь необходимо иметь ссылку на объект preferences для доступа к свойствам, разве нет? Так вот как лучше эту точку доступа организовать.

Вариант в каждом классе которому нужны свойства, иметь свою переменную properties, вызывать его конструктор, читая данные из файла я так понимаю плох. Получится что будет куча объектов которые смотрят на один и тот же файл и может получиться что значения переменных в разных объектах будут различаться(если к примеру какой то объект изменит опцию).
...
Рейтинг: 0 / 0
28.12.2012, 02:52:51
    #38095639
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
А проект использует фреймворки? - Пойти по пути, о котором говорит mayton - синглтон, но с использованием технологии, которую предоставляет фреймворк. На примере Спринга это бин класса org.springframework.context.support.ReloadableResourceBundleMessageSource - путем определения ссылки
Код: java
1.
@Autowired private MessageSource messages;

можно обращаться к пропертям из любого места. Или тут что-то сложнее (или чего не уловил)?
...
Рейтинг: 0 / 0
28.12.2012, 03:43:06
    #38095646
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
Эх за что люблю джавистов... Всюду толкают фреймворки
Автор-же пишет - программа... формы с контролами.
Скромнее надо быть господа. Забыли старика Уильяма Оккама?
...
Рейтинг: 0 / 0
28.12.2012, 04:02:45
    #38095652
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
Что есть "программа" в разрезе темы нашего форума?
Да и суть сводится всего лишь к тому, чтобы реализовать у себя НЕЧТО, что было бы не столь примитивным как банальная статика, не таким противоречивым как простой синглтон, менее затратным по коду, чем фабрика, и при этом удобным. DI сюда вписывается как нельзя лучше ... правда, без велосипеда или фреймворка действительно не обойтись. А вдруг он "на борту"?
...
Рейтинг: 0 / 0
28.12.2012, 10:00:29
    #38095761
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
Всё усложняем.
По умолчанию программа с гуи - синхронна и однопоточна.
Всё усложняем.
По умолчанию программа с гуи - синхронна и однопоточна.
Значит любая форма при рождении может Создать утилитный объект , он прочитает с реестра и сразу его уничтожит. Незачем в оперативке постоянно держать класс настроек.
...
Рейтинг: 0 / 0
28.12.2012, 10:11:47
    #38095774
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
pgm300забыл ник,
Имеется в виду организация точки доступа к свойствам. Если через preferences хранить их например в системном реестре, все равно ведь необходимо иметь ссылку на объект preferences для доступа к свойствам, разве нет? Так вот как лучше эту точку доступа организовать.

Вариант в каждом классе которому нужны свойства, иметь свою переменную properties, вызывать его конструктор, читая данные из файла я так понимаю плох. Получится что будет куча объектов которые смотрят на один и тот же файл и может получиться что значения переменных в разных объектах будут различаться(если к примеру какой то объект изменит опцию).

Не понимаю я вас, вот этой строчкой можно получить доступ к preferences из любой точки программы -
Preferences prefs = Preferences.userNodeForPackage(com.mycompany.MyClass.class);
Тот же синглтон вид сбоку, нафига свое городить? У меня используется во всех свинг проектах, вообще никакого геморроя.
Ну не нравится тебе ссылка на класс, сделай статический враппер, делов то.
...
Рейтинг: 0 / 0
28.12.2012, 10:13:05
    #38095779
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
...
Рейтинг: 0 / 0
28.12.2012, 10:35:34
    #38095812
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties)
Да я не против preferences. Пускай юзает. Кст. был случай когда мне были полезны static final булевы
переменные в классе. С помощью них можно иммитировать поведение #ifdef.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]