Содержание
- 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. Скачать презентацию
 Slaidy.com
 Slaidy.com













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





 Модуль авторизации
 Модуль авторизации Портал персонифицированного дополнительного образования Кировской области. Как получить сертификат дополнительного образования
 Портал персонифицированного дополнительного образования Кировской области. Как получить сертификат дополнительного образования АРМ следователя (дознавателя)
 АРМ следователя (дознавателя) Перевод при помощи NeoDic
 Перевод при помощи NeoDic Медиация в нашей жизни
 Медиация в нашей жизни Фарм аккаунтов. Что это и с чем его едят?
 Фарм аккаунтов. Что это и с чем его едят? Прикладное ПО. Системное ПО. Системы программирования
 Прикладное ПО. Системное ПО. Системы программирования Урок - игра Основы информатики
 Урок - игра Основы информатики JavaScript
 JavaScript ВКР: Автоматическая система управления пожарно-охранной сигнализацией и освещением выставочного комплекса
 ВКР: Автоматическая система управления пожарно-охранной сигнализацией и освещением выставочного комплекса Профессия моего папы инженер-программист
 Профессия моего папы инженер-программист Современные модели качества программных продуктов
 Современные модели качества программных продуктов 1С:Университет ПРОФ. Общая информация о решении
 1С:Университет ПРОФ. Общая информация о решении Изображения в памяти компьютера
 Изображения в памяти компьютера Понятие информационной системы (ИС)
 Понятие информационной системы (ИС) Файл и каталог
 Файл и каталог Креатив и оптимизация: друзья или враги?
 Креатив и оптимизация: друзья или враги? Условия
 Условия 1C:Предприятие 8. Автосервис
 1C:Предприятие 8. Автосервис Choose a random element from a nonempty sequence
 Choose a random element from a nonempty sequence Обработка символьной информации в языке Pascal
 Обработка символьной информации в языке Pascal Эффективные ИТ-решения для бизнеса и госструктур
 Эффективные ИТ-решения для бизнеса и госструктур Электронные таблицы
 Электронные таблицы React Lifecycle & Synthetic Event
 React Lifecycle & Synthetic Event Граф. Построение графов
 Граф. Построение графов Чатбот, распознающий эмоции в речи “Fonochat”
 Чатбот, распознающий эмоции в речи “Fonochat” Актуальные вопросы разработки и внедрения технологических схем предоставления государственных и муниципальных услуг
 Актуальные вопросы разработки и внедрения технологических схем предоставления государственных и муниципальных услуг История внедрения и перспективы применения компьютерных технологий в современной медицине и практике
 История внедрения и перспективы применения компьютерных технологий в современной медицине и практике