
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.12.2012, 17:38:21
|
|||
|---|---|---|---|
|
|||
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
Всем привет) Хочется узнать мнение коллег К примеру есть программа, несколько форм с контролами, которая отслеживает поведение чего нибудь и отображает. Данные пишет в лог, читает из лога и т.д. Имеем настройки форм (размер, состав элементов), настройки директорий, интервал отслеживаний и т.д. Всю эту кучу настроек храним в Properties (файл настроек). При запуске программы инициализируем объект типа properties, читаем опции из файла и затем ссылку передаем другим объектам (они уже читают нужные для них свойства). Но к примеру если файл опций по прежнему один, а форм штук 20 и еще с десяток объектов чьи свойства хранятся, мы что в каждом конструкторе должны этот параметр предусмотреть чтоб передать ссылку на propertues? А если файлов свойств или таких глобальных объектов - несколько, мы будем в каждом конструкторе уже несколько параметров иметь? Кажется как то некрасиво. А если к примеру не передавать ссылку а каждый объект пусть сам инициализирует для себя и имеет свой объект properties (все объекты читают один и тот же файл опций но вызывая конструктор properties а не получая ссылку). Этот вариант тоже какой то... Какие еще есть варианты? Надеюсь понятно изложил. Кто как решал такой вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.12.2012, 20:15:30
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
В Java нет глобальных переменных. Но всегда есть стартовый экземпляр main-класса в котором можно 1 раз инициализировать Properties и передавать их через конструкторы, фабрики или статические конструкторы в контейнерные классы. Альтернативно, можно прицепить свойства к какому-то уже существующему объекту. Например к System.properties. Можно также свой property-класс сделать Singleton-ом и вызывать его в любом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.12.2012, 20:39:58
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
нафига все это когда есть стандартные java.util.Preferences еще с версии 1.5, если не изменяет память ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.12.2012, 20:52:55
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
Еще оперативнее. Если имена свойств не меняются - захардкодить их в отдельный класс и статически инициировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 02:21:17
|
|||
|---|---|---|---|
|
|||
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
mayton, Имеется в виду в отдельном классе инициализировать (скажем из файла) все переменные объявленные как public static? Ну да это вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 02:23:10
|
|||
|---|---|---|---|
|
|||
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
mayton, Вариант с синглтоном и инициализацией в main я и использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 02:29:49
|
|||
|---|---|---|---|
|
|||
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
забыл ник, Имеется в виду организация точки доступа к свойствам. Если через preferences хранить их например в системном реестре, все равно ведь необходимо иметь ссылку на объект preferences для доступа к свойствам, разве нет? Так вот как лучше эту точку доступа организовать. Вариант в каждом классе которому нужны свойства, иметь свою переменную properties, вызывать его конструктор, читая данные из файла я так понимаю плох. Получится что будет куча объектов которые смотрят на один и тот же файл и может получиться что значения переменных в разных объектах будут различаться(если к примеру какой то объект изменит опцию). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 02:52:51
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
А проект использует фреймворки? - Пойти по пути, о котором говорит mayton - синглтон, но с использованием технологии, которую предоставляет фреймворк. На примере Спринга это бин класса org.springframework.context.support.ReloadableResourceBundleMessageSource - путем определения ссылки Код: java 1. можно обращаться к пропертям из любого места. Или тут что-то сложнее (или чего не уловил)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 03:43:06
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
Эх за что люблю джавистов... Всюду толкают фреймворки Автор-же пишет - программа... формы с контролами. Скромнее надо быть господа. Забыли старика Уильяма Оккама? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 04:02:45
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
Что есть "программа" в разрезе темы нашего форума? Да и суть сводится всего лишь к тому, чтобы реализовать у себя НЕЧТО, что было бы не столь примитивным как банальная статика, не таким противоречивым как простой синглтон, менее затратным по коду, чем фабрика, и при этом удобным. DI сюда вписывается как нельзя лучше ... правда, без велосипеда или фреймворка действительно не обойтись. А вдруг он "на борту"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 10:00:29
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
Всё усложняем. По умолчанию программа с гуи - синхронна и однопоточна. Всё усложняем. По умолчанию программа с гуи - синхронна и однопоточна. Значит любая форма при рождении может Создать утилитный объект , он прочитает с реестра и сразу его уничтожит. Незачем в оперативке постоянно держать класс настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 10:11:47
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
pgm300забыл ник, Имеется в виду организация точки доступа к свойствам. Если через preferences хранить их например в системном реестре, все равно ведь необходимо иметь ссылку на объект preferences для доступа к свойствам, разве нет? Так вот как лучше эту точку доступа организовать. Вариант в каждом классе которому нужны свойства, иметь свою переменную properties, вызывать его конструктор, читая данные из файла я так понимаю плох. Получится что будет куча объектов которые смотрят на один и тот же файл и может получиться что значения переменных в разных объектах будут различаться(если к примеру какой то объект изменит опцию). Не понимаю я вас, вот этой строчкой можно получить доступ к preferences из любой точки программы - Preferences prefs = Preferences.userNodeForPackage(com.mycompany.MyClass.class); Тот же синглтон вид сбоку, нафига свое городить? У меня используется во всех свинг проектах, вообще никакого геморроя. Ну не нравится тебе ссылка на класс, сделай статический враппер, делов то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 10:13:05
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.12.2012, 10:35:34
|
|||
|---|---|---|---|
Как лучше реализовать доступ всех объектов программы к ее опциям?( Properties) |
|||
|
#18+
Да я не против preferences. Пускай юзает. Кст. был случай когда мне были полезны static final булевы переменные в классе. С помощью них можно иммитировать поведение #ifdef. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2130279]: |
0ms |
get settings: |
14ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
50ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
81ms |
get tp. blocked users: |
3ms |
| others: | 314ms |
| total: | 526ms |

| 0 / 0 |
