Содержание
- 2. public class Chessboard { public Chessboard() { this.cells = LoadBoard( new StreamReader("input.txt"), new BoardParser()); } }
- 3. реализация интерфейса использование SRP DIP
- 4. public class Chessboard { public Chessboard( StreamReader input, IBoardParser boardParser) { this.cells = LoadBoard(input, boardParser); }
- 5. Не вызывать статические методы Не вызывать конструкторы Ссылки на объекты передавать в конструктор - Кто их
- 6. Composition Root место, где модули соединяются вместе загончик для операторов new Чем ближе к точке входа
- 7. Имена файлов, пути, порты, ... Неудобные зависимости (файлы, консоль, ui, сеть, БД, ...) Другие сервисы Формат
- 8. В ЧЕМ РАЗНИЦА МЕЖДУ DEPENDENCY INJECTION И DEPENDENCY INVERSION PRINCIPLE ?
- 9. public class Chessboard { public Chessboard() { var reader = ServiceLocator.Instance.Get (); var parser = ServiceLocator.Instance.Get
- 10. public class Chessboard { public Chessboard( StreamReader input, IBoardParser boardParser) { this.cells = LoadBoard(input, boardParser); }
- 11. Обеспечивается разными способами Dependency Injection Service Locator DEPENDENCY INVERSION…
- 12. Скрывает реальные зависимости класса Ухудшается читабельность Увеличивается хрупкость Заражает весь код, в котором используется Наркотик, с
- 13. DI CONTAINER
- 14. public class Robot : IRobot { public Robot(IDistanceSensor distanceSensor) { this.distanceSensor = distanceSensor; } ... }
- 15. public HttpServer(IEnumerable handlers) { … } public FileLoader(IFileFormat[] formats) { … } public DocumentPage(IAction[] actions) {
- 16. Controller(IView view) BasicView(IController controller): IView А ЕСЛИ ЗАВИСИМОСТИ ЦИКЛИЧЕСКИЕ? Controller(Lazy lazyView) BasicView(IController controller) : IView var
- 17. var createMyClass = container.Get >(); MyClass c = createMyClass(42, “!”); https://github.com/ninject/Ninject.Extensions.Factory/wiki ФАБРИКА ВМЕСТО NEW
- 18. Время жизни (InSingletoneScope, InThreadScope) Именованные зависимости (Named) Контекстно-зависимое инжектирование (WhenInjectedInto) Конвенции и авторегистрация (FromThisAssembly ...) Модульность
- 19. В программе FractalPainter странно реализован Dependency Inversion… Необходимо произвести рефакторинг по списку в README.md ЗАДАЧА FRACTALPAINTER
- 20. Можно внедрять контейнер постепенно Контейнер должен использоваться в одном месте, а не заражать код Контейнер подходит
- 22. Скачать презентацию













![public HttpServer(IEnumerable handlers) { … } public FileLoader(IFileFormat[] formats) { … }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1116761/slide-14.jpg)





Информатика 5 класс (Урок № 2)
АО ТомскНИПИнефть: Работа в специнституте ГИС-автоматизации
Дудлы Гугла
Системы в нашей жизни
Домены и рабочая группа в ОС Windows
Веб-сервис по созданию статей
Как правельно сохранить и опубликовать задание в МЭО
Обзор технологий интеллектуализации ГИС
Область профессиональной деятельности выпускников. Для ОИС-119
Разработка и реализация коммуникационной стратегии. Работа со СМИ в процессе стратегического планирования коммуникаций
Условный оператор. Алгоритмы ветвления
Программное обеспечение для диагностики диска
Анимированные ребусы
В гостях у ГОСТа (основные термины и понятия)
Способы унификации текстов документов
Технологии, используемые при проектировании виртуальной выставки
Защита персональных данных в ПАО Гофрон
Презентация на тему Персональный компьютер
Роль СМИ в формировании выученной беспомощности
Маруся на уроках английского языка
Единый урок по безопасности в сети Интернет (сентябрь-ноябрь 2018)
10 сайтов, полезных для школьников
Специализированное решение для Retail
Интернет-маркетинг для чайников
Средства анализа и визуализации данных
Кодирование по слогу. Вспомнить всё! Урок 6
Технологии программирования. Работа с файлами
Использование Single-Row функция для пользовательского вывода