Содержание
- 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)





MalakhovOFF advertises LIVE: his well-baby check
Adobe InDesign. Быстрое погружение. Введение
Кортежирование графов
Наследование и полиморфизм
Программирование в среде RobotC. Занятие 1
Программирование. Базовая архитектура IBM PC Х86
Primarkt. Предложения рынка недвижимости России
Устройства памяти
Процессор. Флаги
ВКР: Использование новых информационных технологий в информационно документационном обеспечении управления
Видеоконференция, как средство обучения
ТРПО. Лекция 1
Процесс DocuSign
Urban Life — Социальный проект
Облака и византийские генералы
Формулы, применяющиеся в Excel
Презентация на тему Глобальная компьютерная сеть Интернет
Терминологический словарь
Занятие 8. Средства анализа данных MS Excel
Информационное общество. Информационная культура
Blogosphere as an element of the modern media field as an element of the modern media field
Формы Бэкуса-Наура
Внедрение и сопровождение 1С
Эволюция компьютерного вируса
Логика. Тренировочные задания
Файловые менеджеры
Информационная поддержка деятельности педагогов
Внешние устройства компьютера