Склонность внедрения зависимости?

Теперь в tampermonkey вы можете использовать

// @grant        window.close

, а затем просто назовите

window.close();
12
задан Mark Renouf 3 September 2008 в 22:16
поделиться

8 ответов

Я попробовал описывать некоторые возможные оборотные стороны в сообщении в блоге здесь: http://kevin-berridge.blogspot.com/2008/06/ioc-and-di-complexity.html

13
ответ дан 2 December 2019 в 04:18
поделиться

Кроме того, я чувствовал бы себя намного лучше, если бы это была часть языка, я использовал.

К вашему сведению существует очень простая и функциональная dependecy инжекция как часть JDK 6. При необходимости в легком, простом внедрении зависимости то используйте его.

Используя класс ServiceLoader можно запросить сервис (или много реализаций сервиса) на основе класса:

 package dependecyinjection;  
 import java.util.ServiceLoader;  

 public abstract class FooService {  

     public static FooService getService() {  
         ServiceLoader<FooService> loader = ServiceLoader.load(FooService.class);  

         for (FooService service : loader) {  
             return provider;  
         }  

         throw new Exception ("No service");  
     }  

     public abstract int fooOperation();  

 }  

 package dependecyinjection;  
 public class FooImpl extends FooService {  
     @Override  
     public int fooOperation() {  
         return 2;  
     }  
 }  

То, как делает ServiceLoader, определяет реализации услуги, которые возвращаются?

В Вашей папке проекта создают папку под названием META-INF/services и создают файл, названный dependencyinjection. FooService. Этот файл содержит строку, указывающую на реализацию услуги. В этом случае: dependecyinjection. FooImpl

Это еще не широко известно.

4
ответ дан 2 December 2019 в 04:18
поделиться

Я - большой beleaver в IO однако, я видел некоторые проекты с огромными файлами настройки XML, которые никто не понимает. Поэтому остерегайтесь программирования в xml.

4
ответ дан 2 December 2019 в 04:18
поделиться

По-моему, главные недостатки являются кривой обучения (как Вы указываете), и потенциал для добавленной абстракции для создания более трудным отладить (который является действительно частью кривой обучения также).

Мне DI, кажется, мне более подходит для больших, сложных систем - для маленьких одноразовых приложений, он может привести к сверхспроектированному приложению, в основном, имение архитектуры занимает больше времени разработки для соблюдения того, чем он может когда-либо восполнять в значении, которое он обеспечивает.

3
ответ дан 2 December 2019 в 04:18
поделиться

Вы могли добавить ссылку или два для объяснения, каково Внедрение зависимости на самом деле для тех из нас манипулирующий дома? Статья Википедии интересна, но не очень поучительна.

2
ответ дан 2 December 2019 в 04:18
поделиться

Просто прекратите волноваться об этом. Это - мое мнение, что во время методы МОК будут второй натурой большинству разработчиков. Я пытаюсь преподавать devs здесь на работе об этом, и я нахожу трудным донести смысл сообщения, потому что это чувствует себя таким образом неестественным к способу, которым мы всегда делали вещи.. который именно так, оказалось, был неправильным путем. Кроме того, разработчикам, и плохо знакомым с МОК и в новинку для проекта, который я нахожу, приходится еще больше нелегко. Они - использование к использованию IDE для следования за следом зависимостей для получения понимания того, как все это "остается целым". Та информация часто пишется в тайный XML.

3
ответ дан 2 December 2019 в 04:18
поделиться

@Blorgbeard: http://www.martinfowler.com/articles/injection.html является, вероятно, одной из лучших статей о предмете

0
ответ дан 2 December 2019 в 04:18
поделиться

Единственным вниз сторона, о которой я могу думать, является крошечное снижение производительности посредством постоянных виртуальных вызовов :)

1
ответ дан 2 December 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: