|
|
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Кто-то придирается к словам. Вы определенно хотите об этом поговорить. У нас есть ссылка на обьект. Значит он не будет собран. Что именно вам тут неясно? Теперь усложняем: Мы из конструктора опубликовали ссылку на обьект за пределы блока try. Но потом было исключение. Будет ли такой обьект собран? Мы вроде вышли из блока try{}, значит вроде все ок? Но нет. У нас есть опубликованная ссылка на обьект, а значит он не будет собран, значит мы к нему можем обратиться, но он недоконструирован. Что именно вам тут неясно? Что вам не нравится? Если такая формулировка вам не нравится - почему вы не сформулируйте это как считаете нужным? Я знаю - вы можете это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:31 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
chabapokУ нас есть ссылка на обьект. Значит он не будет собран. Что именно вам тут неясно? Я кстати тоже не понял. Потом подумал, и понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:35 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
chabapok0FDНо вопрос был про сборщик мусора. В С++, например, в таких случая(исключение в конструкторе) не бывает утечки. фраза "Не понял" не является вопросом про сборку мусора. Тот код что я привел - не утечка памяти. Ведь обьект доступен, и пользоваться им можно, другое дело что он недоконструирован что не есть хорошо. А то что вы добавили - не приводит проблемам недоконсруированных обьектов. Сборка мусора не при чем, хотя и добавляет очевидну фичу - раз ссылка на обьект есть, он собран не будет. В с++ точно так же можно опубликовать ссылку на себя в конструкторе и поиметь sigseg когда-нибудь потом. Понял буквально, но все равно обьект будет под управлением сборщика и может быть удален сборщиком. То что я привел показывает, что даже если перенести из конструктора(тот же самый метод без void) в отдельный метод не решает проблемы, либо более реальные примеры приводите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:41 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
chabapokКто-то придирается к словам. Вы определенно хотите об этом поговорить. Пятница жа. chabapokУ нас есть ссылка на обьект. Значит он не будет собран. Что именно вам тут неясно? Точность формулировки смущает. Потому что если эту трактовку убрать из конктекста, то она тоже будет неверной. chabapokМы из конструктора опубликовали ссылку на обьект за пределы блока try. Но потом было исключение. Будет ли такой обьект собран? Мы вроде вышли из блока try{}, значит вроде все ок? Но нет. У нас есть опубликованная ссылка на обьект, а значит он не будет собран, значит мы к нему можем обратиться, но он недоконструирован. Вооот. Это оно. chabapokЧто именно вам тут неясно? Что вам не нравится? Если такая формулировка вам не нравится - почему вы не сформулируйте это как считаете нужным? Я знаю - вы можете это сделать. Мне не ясно зачем писать такие громкие заявления chabapokВ часности, публикация this в конструкторе плоха тем, что если после публикации возникнет исключение, то обьект не будет удален сборщиком мусора Без конкретных уточнений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:47 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
MasterZivНу вот нахрена писать в SafeListener вложенный нестатический класс, если можно сам SafeListener уже унаследовать от EventListener и реализовать там этот void onEvent(Event e) ? Я думаю , мы дойдем и до Вашего вопроса, кстати ответ есть в книге - в Виде Паттерна . Просто Есть много похожих Паттернов - и надо их увидеть , различать и понимать ... для этого тема и была создана ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 18:19 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
0FD Понял буквально, но все равно обьект будет под управлением сборщика и может быть удален сборщиком. Ясное дело. 0FDТо что я привел показывает, что даже если перенести из конструктора(тот же самый метод без void) в отдельный метод не решает проблемы Как же ж не решает? Не решает для тех, кто рассматривает конструктор как метод. Но конструктор, по задумке - не метод, а конструктор! Есть отличия. Изза сегодняшней придирчивости Blazkowicz я побоюсь в них сильно углубляться. Ненормально использовать методы неполностью сконструированного обьекта. Это опасно тем, что может приводить к трудноуловимым ошибкам, а если такой обьект юзать из другого потока, то это может приводить к ошибкам "состояние гонки". Причем, это касается не только java. 0FDболее реальные примеры приводите. Я не могу вот так сходу придумать более реальный однопоточный пример. Поэтому, более реальные примеры пускай приводит топикстартер, я лишь уточинил его недосказанность. Навскидку чуть более реальный пример, это когда у вас поле не int i, а final OtherObject obj. В конструкторе final-поле, как известно, должно инициализироваться, но из за исключения оно не успевает проинициализироваться. А программист надеется что финал-поле будет именно таким как он указал в конструкторе. Насчет более реального многопоточного примера. Привожу пример: пускай исключений нет, но конструктор публикует this в другой поток. Чем это грозит? Другой поток может вызвать методы обьекта еще до завершения конструктора в текущем потоке. В этом случае непредсказуемо какое значение полей увидит другой поток - уже проинициализированное в конструкторе либо еще нет. надеюсь, понятно описал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 18:27 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Factory Pattern как его увидеть в коде или когда его можно применить ?! Для себя (как памятка) вывел такое привило (самый простой вариант ) - это Если в голове или коде - встречается что то из списка : cо словом static в сигнатуре или в названии: valueOf , EnumSet , getInstance , getType , newInstance перед нами - Factory Pattern . так же На ряду с конструктором класса для получения экземпляра - так же можно добавить фабричный метод получения экземпляров данного класса ( Если они требуются ) (Это как определить toString() , equals () , hashСode() - > valueOf() джентльменский набор ) Пример : Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 18:35 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Usman, Я эту ссылку видел раз 100 - как она Вам помогла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 20:06 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Atum1Usman, Я эту ссылку видел раз 100 - как она Вам помогла?Видел уже в 10 раз больше Вас, и до сих пор продолжает помогать... Действительно очень хороший пост. имхо - ЛикБез по паттернам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 20:17 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Abstract Factory Pattern порождающий шаблон проектирования, позволяющий изменять поведение системы, варьируя создаваемыми объектами, при этом сохраняя интерфейсы. Он позволяет создавать целые группы взаимосвязанных объектов, которые, будучи созданными одной фабрикой, реализуют общее поведение. Шаблон реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания компонентов системы (например, для оконного интерфейса он может создавать окна и кнопки). Затем пишутся классы, реализующие этот интерфейс. Код: java 1. 2. 3. 4. Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. //Color.java Код: java 1. 2. 3. Red.java Код: java 1. 2. 3. 4. 5. 6. 7. Green.java Код: java 1. 2. 3. 4. 5. 6. 7. AbstractFactory.java Код: java 1. 2. 3. 4. ShapeFactory.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ColorFactory.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. FactoryProducer.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. AbstractFactoryPatternDemo.java Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. Код: java 1. 2. 3. 4. 5. 6. Фактически мы объединили несколько фабрик в одну для производства экземпляров на все случаи жизни .... в каких местах кода это может быть удобно ? Фибрика фабрик , для каких целей и как ее можно увидеть , понять что она нужна ? вообще такой подход когда у нас в интерфейсе (абстрактном классе ) указаны другие интерфейсы используется повсеместно ...и довольно часто , в огромном количестве решений и паттернов. отсюда вытекает вопрос - нет ли описания, формулы которая пояснит это поведение, кто придумал такой трюк ? итд... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 17:58 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Abstract Factory предоставляет интерфейс для создания семейств связанных или зависимых объектов ,позволяя не указывать их конкретные классы. При таком подходе основная проблема - видна сразу - трудоемкость добавления новых объектов . так же и при удалении ... а вот какие плюсы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 18:06 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
может кто нибудь привести такой же простой пример этого паттерна но используя Reflection ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 18:11 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
нашел более интересный пример использования тут http://www.javenue.info/post/27 Код: java 1. 2. 3. 4. 5. 6. когда из абстрактной фабрики создаем абстрактных персонажей ... т.е. посылая в этот метод нужную нам фабрику мы можем получать нужный нам отряд ... и выполнять над ним общие действия. так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 18:16 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Atum1Фибрика фабрик , для каких целей и как ее можно увидеть , понять что она нужна ? http://ru.wikipedia.org/wiki/Инверсия_управления Формулировка: Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракции. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 19:50 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Usman, О! Спасибо! как то не думал, что тут явно присутствует этот паттерн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 21:44 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Singleton Design Pattern порождающий шаблон проектирования, гарантирующий что в однопоточном приложении будет единственный экземпляр класса с глобальной точкой доступа. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 09:23 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Чтобы не забыть , более корректно через Demand Holder Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Основной вопрос по этому паттерну - наверное это его поведение в многопоточной среде . Как, почему,зачем и где его можно встретить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 09:25 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Atum1может кто нибудь привести такой же простой пример этого паттерна но используя Reflection ? MVC, а именно М - модели. Была у меня такая задача, реализация MVC паттерна. В рамках этой задачи была создана фабрика моделей, которая создавала конкретные модели используя Reflection по полному имени класса. Очень упрощённо Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. Вместе с тем у такого шаблона есть недостаток - он слабо применим в WEB приложениях, т.к. синглтоны могут дать утечку памяти при UNDEPLOY приложения... А вот в GUI приложении очень даже неплохо себя показывает. IMHO, вместе с тем этот шаблон применим когда у Вас моделей более 20, а до этого числа можно и не использовать фабрику моделей, а создавать их самостоятельно по мере надобности. Кстати, JDBC драйвера загружаются по этому-же принципу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 11:47 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Atum1Чтобы не забыть , более корректно через Demand Holder Корректных имплементаций синглтона много. Это и холдер, и final, и DCL, и т.д.. Atum1Основной вопрос по этому паттерну - наверное это его поведение в многопоточной среде.Ответ таков: 1) Его надо корректно опубликовать. 2) Его методы должны быть thread-safe. Atum1Как, почему,зачем и где его можно встретить?Причин на его использование тысяча и одна. Например, классическое enterprise-приложение с anemic моделью, очень часто целиком и полностью состоит из синглтонов (напр., созданных через Spring). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 12:14 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Builder Design Pattern порождающий шаблон проектирования. Отделяет конструирование сложного объекта от его представления, так что в результате одного и того же процесса конструирования могут получаться разные представления. Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:42 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
Prototype Design Pattern порождающий шаблон проектирования, его осбенность в том, что это паттерн создания объекта через клонирование другого объекта вместо создания через конструктор. Код: 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. 27. 28. 29. 30. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: 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. 27. 28. 29. 30. 31. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Shape : Circle Shape : Square Shape : Rectangle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2014, 13:04 |
|
||
|
Friday pattern
|
|||
|---|---|---|---|
|
#18+
один вопрос когда и как правильно выбирать между abstract factory и Prototype. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2014, 13:05 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38530145&tid=2122558]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 307ms |

| 0 / 0 |
