- 1
this.network = new Network(this);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−48
this.network = new Network(this);
Я ниасилил DI.
public Controller(){
this.network = new Network(this);
}
http://ideone.com/AuZBDE
Код не компилируется. Да и не будет всё норм: объект в жавке не стоит публиковать до завершения конструктора. Вдруг network стартует в конструкторе тред, в котором вызывает методы Controller. Читай про безопасную публикацию объектов в жаве.http://vlkan.com/blog/post/2014/02/14/java-safe-publication/
но лучше конечно автоинжект в конструктор
Важно что он собирает тебе всю деревяшку объектов
Внутри Network может еще 140 инжектов быть, и 3 из них в конструктор
DI может одному объекту заинжектить SimpleNetwork, второму - AdvancedNetwork, а третьему - вообще NetworkMock. Локатор так не сможет, т.к. он не знает, куда пойдёт Network о котором его попросили.
Он может посмотреть в Thread.currentThread().getStackTrace() и решить
Фу, нет.
надо кинуть эксепшен, сразу жего поймать, и посмотреть стек трейс
Надо в статический анализатор правило такое добавить.