powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Friday pattern
4 сообщений из 79, страница 4 из 4
Friday pattern
    #39531235
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Любовь к if - else ?

как то лечится ?Можно полиморфизмом или switch/case.
Atum1нужно дать рекомендации по рефакторингу ... - как есть ,и как нужно ...Что-во-что преобразуется? Можно посмотреть на исходные данные?Atum1прошу от троллинга воздержаться спасибоStream-ный код (:
...
Рейтинг: 0 / 0
Friday pattern
    #39531255
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Начну Сам :

Антипаттерн – публикация this в конструкторе
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class ThisEscape { 
... 
 public ThisEscape(EventSource source) { 
     source.registerListener(new EventListener() { 
                   public void onEvent(Event e) { 
                        doSomething(e); 
               } 
           }); 
 ... 
 } 
} 



решение - использовать фабричный метод :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class SafeListener { 
     private final EventListener listener; 
     private SafeListener() { 
         listener = new EventListener() { 
                 public void onEvent(Event e) { 
                doSomething(e); 
          } 
         }; 
  } 

 public static SafeListener newInstance(EventSource source) { 
   SafeListener safe = new SafeListener(); 
   source.registerListener(safe.listener); 
 return safe; 
 } 
} 



Что-то я не догоняю, где здесь публикация this?
...
Рейтинг: 0 / 0
Friday pattern
    #39531275
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettAtum1Антипаттерн – публикация this в конструкторе
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class ThisEscape { 
... 
 public ThisEscape(EventSource source) { 
     source.registerListener(new EventListener() { 
                   public void onEvent(Event e) { 
                        doSomething(e); 
               } 
           }); 
 ... 
 } 
} 



Что-то я не догоняю, где здесь публикация this?

Реализация EventListener не статическая, значит содержит неявную ссылку на "оборачивающий" объект. Т.е. на this.
Т.е. в source передан объект со ссылкой на this.
...
Рейтинг: 0 / 0
Friday pattern
    #39531278
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,

понял, спасибо
...
Рейтинг: 0 / 0
4 сообщений из 79, страница 4 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Friday pattern
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]