Теперь в tampermonkey вы можете использовать
// @grant window.close
, а затем просто назовите
window.close();
Я попробовал описывать некоторые возможные оборотные стороны в сообщении в блоге здесь: http://kevin-berridge.blogspot.com/2008/06/ioc-and-di-complexity.html
Кроме того, я чувствовал бы себя намного лучше, если бы это была часть языка, я использовал.
К вашему сведению существует очень простая и функциональная 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
Это еще не широко известно.
Я - большой beleaver в IO однако, я видел некоторые проекты с огромными файлами настройки XML, которые никто не понимает. Поэтому остерегайтесь программирования в xml.
По-моему, главные недостатки являются кривой обучения (как Вы указываете), и потенциал для добавленной абстракции для создания более трудным отладить (который является действительно частью кривой обучения также).
Мне DI, кажется, мне более подходит для больших, сложных систем - для маленьких одноразовых приложений, он может привести к сверхспроектированному приложению, в основном, имение архитектуры занимает больше времени разработки для соблюдения того, чем он может когда-либо восполнять в значении, которое он обеспечивает.
Вы могли добавить ссылку или два для объяснения, каково Внедрение зависимости на самом деле для тех из нас манипулирующий дома? Статья Википедии интересна, но не очень поучительна.
Просто прекратите волноваться об этом. Это - мое мнение, что во время методы МОК будут второй натурой большинству разработчиков. Я пытаюсь преподавать devs здесь на работе об этом, и я нахожу трудным донести смысл сообщения, потому что это чувствует себя таким образом неестественным к способу, которым мы всегда делали вещи.. который именно так, оказалось, был неправильным путем. Кроме того, разработчикам, и плохо знакомым с МОК и в новинку для проекта, который я нахожу, приходится еще больше нелегко. Они - использование к использованию IDE для следования за следом зависимостей для получения понимания того, как все это "остается целым". Та информация часто пишется в тайный XML.
@Blorgbeard: http://www.martinfowler.com/articles/injection.html является, вероятно, одной из лучших статей о предмете
Единственным вниз сторона, о которой я могу думать, является крошечное снижение производительности посредством постоянных виртуальных вызовов :)