Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Множить-ли графические элементы, один объект или множество? 
:(
    Опции темы
_Y_
Дата 26.4.2014, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 1
Всего: 34



Многие "служебные" объекты, предстваляющие графические элементы, можно использовать многократно в разных объектах одного и того же GUI. Кто-то так и делает, а кто-то предпочитает создавать множество одинаковых (или подобных?) объектов. Вот два фрагмента кода, дающие один и тот же результат:

Повторное использование объекта Border:
Код

Border border = new BevelBorder(BevelBorder.RAISED);
        
JLabel jLbl = new JLabel("Label");
jLbl.setBorder(border);
        
JTextField jTxt = new JTextField("Text");
jTxt.setBorder(border);


Создание отдельных объектов Border:
Код

JLabel jLbl = new JLabel("Label");
jLbl.setBorder(new BevelBorder(BevelBorder.RAISED));
        
JTextField jTxt = new JTextField("Text");
jTxt.setBorder(new BevelBorder(BevelBorder.RAISED));


Зрительный результат один и тот же. Но я вот задумался: Какой вариант грамотнее с точки зрения внутренних механизмов Java и с точки зрения стиля программирования?

ЗЫ: Вопрос гораздо шире, чем только Border-ы. Он же часто возникает при использовании рендеров, да и многих других элементов.

Это сообщение отредактировал(а) _Y_ - 26.4.2014, 11:47


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Mirkes
Дата 26.4.2014, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 2
Всего: 17



Не могу сказать за всех, но я стараюсь, по возможности, использовать одни и те-же объекты. Правда это не всегда получается. Например, если мне нужно разместить в форме несколько меток (JLabel) с одинаковым содержимым, их приходится размножать. 
Во многом ответ зависит от типа объектов. Я ужасно удивлен, что можно использовать один и тот-же экземпляр Border в нескольких компонентах. Можно посмотреть, сколько памяти на этом экономится. Вряд-ли много. При этом использование одного Border (или любого другого объекта) при создании одной формы наверное правомерно, а вот использование одного Border  во всем приложении со множеством форм вряд ли разумно. Кроме того, при изменении имплементации объекта возможность многократного использования может исчезнуть. Это будет трудно обнаружить и долго править.
Так что мой подход таков - если я использую классы, которые гарантированно можно будет использовать многократно (как правило это мои собственные классы) то я предпочитаю использовать один объект многократно. Если уверенности у меня нет, то я размножаю.


--------------------
Mirkes
PM MAIL   Вверх
_Y_
Дата 26.4.2014, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 1
Всего: 34



Mirkes, эта логика мне понятна. Я примерно ее же и придерживаюсь.

Кстати, пример с Border интересен еще и тем, что использование одного Border-а на все приложение позволяет изменять стиль "одним махом": поменял в одном месте (там, где Border создается) и стиль всего UI поменялся. Впрочем, того же легко добиться и с множеством экземпляров Border-а, написав метод эти экземпляры создающий.

Но хотелось бы узнать что думают гуру от UI (т.е. знающие, что там внутри происходит).

Это сообщение отредактировал(а) _Y_ - 10.5.2014, 10:41


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.