В прошлый раз разобрали базовые, самые часто используемые паттерны внедрения зависимостях. Сегодня разберем, остальные два, которые также используются при проектировании гибких систем. Сегодня поговорим, про внедрение через метод и про окружающий контекст. Поехали!
Читать полностью »
Рубрика «dependency injection» - 4
Паттерны внедрения зависимостей. Часть 2
2018-04-06 в 17:16, admin, рубрики: .net, C#, dependencies, dependency injectionКак протестировать SkyNet? (если он написан на JS)
2018-04-05 в 13:13, admin, рубрики: dependency injection, javascript, mocking, rewiremock, testing tools, Тестирование IT-системДавным давно я посмотрел Терминатор1. Немного подрос и посмотрел немного отрефакторенный Терминатор 2. Третьей интерации пришлось ждать немного дольше.
И каждый раз бедному СкайНету не везло, и каждый раз все наперекосяк, и секрет этого невезения очень прост — СкайНет не был Subject Under Test (SUT).
Другими словами SkyNet подзабила на тестирование, и производила разведку боем. И, как это обычно бывает, падала в корку(под пресс, в лаву, далее не помню) примерно сразу после выкладки в продакшен.
И весь вопрос — как же протестировать что-то до этой выкладки, до того момента как станет поздно поворачивать назад. И убить всех человеков, конечно же.
Паттерны внедрения зависимостей. Часть 1
2018-04-01 в 11:53, admin, рубрики: .net, C#, constructor injection, dependency injection, injectionДавайте разберемся с внедрением зависимостей в .Net, так как данная тема является одним из обязательных к изучению для написания качественного, гибкого к изменениям и тестируемого кода. Начнем мы с самих необходимых и базовых паттернов внедрения зависимостей — внедрение через конструктор и через свойство. Итак, поехали!
Читать полностью »
Нативная инверсия зависимостей в TypeScript и React
2018-03-12 в 7:48, admin, рубрики: architecture, composition root, constructor injection, dependency injection, inversify, javascript, React, service locator, solid, TypeScript, Блог компании ДоксВижн, Разработка веб-сайтовКогда я задумался о внедрении зависимостей в TypeScript, то первое, что мне посоветовали — inversify. Я посмотрел эту и другие библиотеки, реализующие паттерн Service Locator, и даже сделал свою собственную — typedin.
Но когда я работал над версией typedin 2.0, то в конце концов понял, что вообще никакой библиотеки не нужно. В TypeScript есть все необходимое.
Dagger 2 для начинающих Android разработчиков. Dagger 2. Продвинутый уровень. Часть 1
2017-12-23 в 9:49, admin, рубрики: android development, dagger 2, dependency injection, java, перевод, Разработка под androidДанная статья является шестой частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с внедрением зависимостей и фреймворком Dagger 2, либо только собирается это сделать. Оригинал написан 23 декабря 2017 года. Перевод вольный.
Dagger 2 для начинающих Android разработчиков. Dagger 2. Часть 2
2017-12-17 в 1:52, admin, рубрики: dagger 2, dependency injection, java, перевод, Разработка под androidДанная статья является пятой частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с внедрением зависимостей и фреймворком Dagger 2, либо только собирается это сделать. Оригинал написан 17 декабря 2017 года. Перевод вольный.
Внедрение зависимостей в .Net Марка Симана 2 — Внедрение конструктора, время жизни
2017-12-11 в 8:19, admin, рубрики: .net, asp.net mvc, dependency injection, ioc, ioc/di, mvc, внедрение зависимостей, ооп, паттерны, паттерны проектирования, Программирование, Проектирование и рефакторинг, Профессиональная литератураЗависимости между слоями приложения | Внедрение конструктора, время жизни
Продолжаем борьбу за слабую связанность. В предыдущей заметке мы рассмотрели зависимости между слоями приложения, прейдем к меньшим формам.
Агрегация, внедрение конструктора
Объекты/классы системы, как и слои, взаимодействуют друг с другом. Между классами тоже есть зависимости.
Например, в листинге 1 MyService использует MyDataContext (EF) – имеет зависимость MyDataContext.
class MyService
{
public void DoSomething()
{
using(var dbCtx = new MyDataContext())
{
// используем dbCtx
}
}
}
Листинг 1. Сильная зависимость MyService от MyDataContext
Dagger 2 для начинающих Android разработчиков. Dagger 2. Часть 1
2017-12-10 в 4:44, admin, рубрики: dagger 2, dependency injection, java, перевод, Разработка под androidДанная статья является четвертой частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с внедрением зависимостей и фреймворком Dagger 2, либо только собирается это сделать. Оригинал написан 10 декабря 2017 года. Перевод вольный.
IoC контейнер на javascript в 90 строк
2017-12-07 в 15:04, admin, рубрики: dependency injection, ioc, ioc контейнеры, javascriptНа прошлой неделе, я получил удовольствие, рассказывая ученикам пятого класса о том, что такое программирование и алгоритмы. За 45 минут сложно рассказать много о такой широкой теме, моей целью было заинтересовать в игровой форме. Тема урока была выбрана «Программирование: как создаются игры».
Вашему вниманию представляется игра, реализованная для этого урока с использованием инверсии зависимости и IoC-контейнера:
Игра DiggerZ, исходный код.
Сразу предупреждаю, про контейнеры я детям не рассказывал.
Читать полностью »
Dagger 2 для начинающих Android разработчиков — Введение
2017-11-27 в 2:51, admin, рубрики: dagger 2, dependency injection, java, перевод, Разработка под androidДанная статья является первой частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с внедрением зависимостей и фреймворком Dagger 2, либо только собирается это сделать. Оригинал написан 18 ноября 2017 года. Изображения и GIF — из оригинала. Перевод вольный.