| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > использование методов |
| Автор: Reptor 16.7.2007, 14:30 |
| Вопрос таков: есть у меня несколько методов (сейчас они описаны просто в главном классе) и вызываются во вложеном классе. Я етот класс хочу вынести как отдельный и наследовать свой главный я уже не смогу. Так вот как мне можно луче вынести эти методы (это можно сказать не логика но очень выжная настройка некоторых возможностей) что б они были доступны отовсюду. Просто не хочу делать это отдельным классом так как по сути экземпляр там создавать несчего (это просто можно сказать набор функций). Как грамотно решить эту проблему? |
| Автор: hamsterKSU 16.7.2007, 15:02 | ||
или сингелтон |
| Автор: Reptor 17.7.2007, 10:24 | ||||
powerOn, это ж всеровно прийдётся создавать экземпляр или я что то недопонял.
А что такое сингелтон? |
| Автор: Domestic Cat 17.7.2007, 10:27 | ||
|
| Автор: hamsterKSU 17.7.2007, 10:49 | ||
| в случае класса со статическими методами тебе не придется создавать класс. сампл такого класса привел Domestic Cat. в случае сингелтона тебе придется создать класс всего один раз - принцип этого патерна. пример сингелтона
|
| Автор: Maksym 17.7.2007, 12:47 |
| Если методы не требуют хранения каких-то глобальных состояний, то синглетон не нужен. Если же требуют, и при этом к коду возможен доступ из разных потоков, методы или состояния нужно будет засинхронизировать. |
| Автор: Reptor 17.7.2007, 17:14 |
| Мне необходимо хранить глобальные переменные (к примеру там какието глобальные настройки которые часто используются ) они у меня сейчас вечно передаются в конструктора и там делаю новую переменную глобальную для этого класса а не всего проекта (как то глупо получается). Я могу в статическиом классе их объявить а потом просто использовать что б не передавать в конструкторы? |
| Автор: chief39 17.7.2007, 17:53 | ||||||
Если тебе нужны глобальные для всего приложения переменные - делай их
в хелпере и в секции
инициализируй |
| Автор: Reptor 17.7.2007, 18:29 |
| я что то не совсем понял как хочет сделать chief39 |
| Автор: chief39 17.7.2007, 18:51 | ||
мдодифицировал домашнего кота |
| Автор: niasilil 20.7.2007, 16:14 |
| или просто использовать http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html |
| Автор: Reptor 20.7.2007, 17:55 |
| я вот попробывал реализовать то что посоветовал Domestic Cat, так же нельзя объявлять класс как static. И поэтому сразу вопрос. Зделав так как сказал chief39, собственно чем этот класс отличается от обычного? Ведь если я зделаю методы static в любом классе я их буду видить. Даже в этом классе что они у меня сейча. В чём тогда отличие класса chief39, от других? И там есть void main(String[] args) зачем она? Я что то совсем потерялся как правельно всё это вынести? |
| Автор: Domestic Cat 20.7.2007, 18:06 |
Извиняюсь, привык к шарпу. |
| Автор: chief39 20.7.2007, 19:23 | ||||||||||
Ничем. Суть в самих переменных и способе инициализации. Запихать - в любой класс. Да. Но. Обычно такие константы выносят в отдельный класс и так его называют - типа GlobalConstants или типа того Чтоб в одном месте хранить и править. Если эта переменная тоьлко в одном классе нужна - можешь её там запулить, а не в этих глобалах
Ни в чём. Класс как класс. Обычный. суьт, опять-таки - в переменных и способе инициализации. А то, что переменные статик позволяет делать
вместо
То есть экземпляр класса(объект) не надо создавать для обращеиня к переменным этим.
Это всего лишь для запуска. Чтоб не создаваьт новый класс и уже из него показывать как доступаться к этим переменным, сделал метод для теста этих переменных. Точно так же будешь обращаться из своих других объектов любых классов. <имя_класса>.<имя_переменной> |
| Автор: math64 20.7.2007, 20:08 | ||||||
| В примере у Domestic Cat - static class Helpers - вложенный. В примере y chief39можно использовать итерфейс и потом делать implements:
Но это только если параметры действительно глобальные, при старте инициализируются и больше не меняются. Если у тебя сервер обслуживающий 2 пользователей или открыты 2 документа и т.п, и у каждого свои параметры? В сервлете есть специальный объект для запоминания (на уровне сервлета, сессии и приложения). В прочих случаях можно поступить так:
В Swing:
|