|
|
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. попался код, интересно разобраться что и куда, вот например, зачем в map помещают Bootstrap.class ( Bootstrap имплементит интерфейс Action ), чтобы потом сделать (Action) klass.newInstance(); т.е. почему сразу не создают Map<String, Action> map И какие преимущества использование *.class (не конкретного экземпляра, а расширения class в программе) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 19:30:40 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rema174И какие преимущества использование *.class (не конкретного экземпляра, а расширения class в программе) ? http://ru.wikipedia.org/wiki/Отложенная_инициализация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 20:23:12 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
Usmanrema174И какие преимущества использование *.class (не конкретного экземпляра, а расширения class в программе) ? http://ru.wikipedia.org/wiki/Отложенная_инициализация тут, не совсем понятно Код: java 1. 2. 3. 4. 5. 6. 7. средний if создаст singleInstance, если тот не существует, а как понимать внешний if - упреждает другие потоки чтоли? Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 21:10:14 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
если оставить только внутренний if, результат будет такой же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 21:17:22 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rema174если оставить только внутренний if, результат будет такой же http://ru.wikipedia.org/wiki/Double_checked_locking ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 21:28:32 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rema174 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. попался код, интересно разобраться что и куда, вот например, зачем в map помещают Bootstrap.class ( Bootstrap имплементит интерфейс Action ), чтобы потом сделать (Action) klass.newInstance(); т.е. почему сразу не создают Map<String, Action> map И какие преимущества использование *.class (не конкретного экземпляра, а расширения class в программе) ? Странный вопрос.... Ты вообще класс от объекта отличаешь? Разные вещи немного... Впрочем, код тоже весьма странный... Одно выкидывание RuntimeException чего стоит, затем ловля и поедание исключения при преобразовании, и почему вдруг Action... В общем, много загадок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 22:14:54 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
А при чем тут отложенная инициализация? Это ж абстрактная фабрика. Только странноватая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 22:23:50 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
MasterZiv, там возбуждается рантайм исключение вероятно только по причине, чтобы дальше не усложнять выяснение причин проблем, т.е. для отладки... хм, ну если вопрос странный, то можно растолковать... раньше не сталкивался с примерами где бы использовались *.class сейчас в map хранятся классы, а экземпляры экшинов создаюся c помощью записей из map, так почему сразу нельзя в mар записать экземпляры экшинов, и брать их оттуда при надобности? ведь все сводится, чтобы получить (Action) klass.newInstance(); или все не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 23:14:40 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
получатся, это и есть т.н. «ленивая инициализация», чтобы создавать экшины по мере надобности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2013, 23:19:46 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rema174или все не так? Всё не так. Это не отложенная инициализация, это -- абстрактная фабрика. http://ru.wikipedia.org/wiki/Абстрактная_фабрика Отложенная инициализация -- это когда тебе нужно создать от нуля до одного экземпляра класса, т.е. фактически опционально создать один, объект, глобальный для приложения. Поскольку его создание дорого по каким-то его внутренним причинам, то тебе не хочется создавать его при инициализации приложения, а только в момент первого требования использования этого объекта, который (момент) может вообще не наступить. Это же -- средство создания комплекса объектов по их функциональному назначению с возможностью вместо базовых объетов создавать для каждого элемента комплекса наследников (т.е. любые реализации) вместо определённых классов. Тут безусловно тоже есть эффект отложенной инициализации, но цель всего кода совсем другая. rema174хм, ну если вопрос странный, то можно растолковать... раньше не сталкивался с примерами где бы использовались *.class сейчас в map хранятся классы, а экземпляры экшинов создаюся c помощью записей из map, так почему сразу нельзя в mар записать экземпляры экшинов, и брать их оттуда при надобности? ведь все сводится, чтобы получить (Action) klass.newInstance(); Если бы ты запихивал в map экземпляры Action, то это было бы средство хранения именованых ссылок на экземпляры, а тут нужно средство именно создания новых экземпляров классов. Класс тут используется как ссылка на метод (функцию) создания экземпляра данного класса. rema174MasterZiv, там возбуждается рантайм исключение вероятно только по причине, чтобы дальше не усложнять выяснение причин проблем, т.е. для отладки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2013, 09:01:28 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
MasterZiv rema174MasterZiv, там возбуждается рантайм исключение вероятно только по причине, чтобы дальше не усложнять выяснение причин проблем, т.е. для отладки... Блин, не дописал. Возбуждается-то оно возбуждается, только почему именно такое, почему абстрактное базовое исключение кидается ? Тежеловато отлаживаться будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2013, 09:39:37 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
в эксепшине это я хотел упростить, просто убрал расшифровку, а получилось непонятно... MasterZivЕсли бы ты запихивал в map экземпляры Action, то это было бы средство хранения именованых ссылок на экземпляры, а тут нужно средство именно создания новых экземпляров классов. Класс тут используется как ссылка на метод (функцию) создания экземпляра данного класса. идея понятна но все-равно сделал по-своему, и, странное дело, работает Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2013, 10:04:15 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rema174но все-равно сделал по-своему, и, странное дело, работает Работает, но по другому. Исходный вариант выдавал разнве экземпляры при последовательных вызовах create(actionName) с одним и тем же параметром, а ваш вариант выдает один и тот же экземпляр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2013, 15:51:47 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rema174в эксепшине это я хотел упростить, просто убрал расшифровку, а получилось непонятно... MasterZivЕсли бы ты запихивал в map экземпляры Action, то это было бы средство хранения именованых ссылок на экземпляры, а тут нужно средство именно создания новых экземпляров классов. Класс тут используется как ссылка на метод (функцию) создания экземпляра данного класса. идея понятна но все-равно сделал по-своему, и, странное дело, работает Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Ты не замечаешь, что метод CREATE у тебя не создает объект? А фабрика нужна для создания объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2013, 16:12:54 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rfq Работает, но по другому. Исходный вариант выдавал разные экземпляры при последовательных вызовах create(actionName) с одним и тем же параметром, а ваш вариант выдает один и тот же экземпляр. это даже лучше, там реально достаточно одного экземпляра для конкретного параметра MasterZivТы не замечаешь, что метод CREATE у тебя не создает объект? А фабрика нужна для создания объектов. главное, что на выходе выдает нужный экшин. можно даже еще проще Код: java 1. 2. 3. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2013, 16:33:09 |
|
||
|
интересно разобраться
|
|||
|---|---|---|---|
|
#18+
rema174, Ну, с такой логикой можно вообще весь код удалить, и клиенту словами сказать, чтобы он когда ему будет нужно новый Action, чтобы он его сам брал где- нибудь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2013, 23:18:33 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=210&tid=2128597]: |
0ms |
get settings: |
16ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
35ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
5ms |
| others: | 282ms |
| total: | 477ms |

| 0 / 0 |
