Хелпикс

Главная

Контакты

Случайная статья





Dependency Injection



Часто наши объекты используют другие объекты в своей работе. Если не обращать внимание на какие-либо паттерны, мы просто создаем какой-либо объект в том классе, где в нем есть необходимость.

Dependency Injection ( Внедрение зависимости ) – это шаблон проектирования, который позволяет создавать слабосвязанный код. Например,

struct FilesWorker

{

FilesWorker(std:: unique_ptr< IFileOutputter> fileOutputter)

{

   this-> fileOutputter = std:: move(fileOutputter);

}

 

void write(std:: string_view path, std:: string_view text)

{

   fileOutputter-> writeMessage(path, text);

}

private:

std:: unique_ptr< IFileOutputter> fileOutputter;

 

};

 

 

Преимущества:

· Помогает в модульном тестировании

· Количество шаблонного кода сокращается, поскольку инициализация зависимостей выполняется компонентом инжектора;

· Расширение приложения становится еще проще;

· Помогает уменьшить связность кода, что важно при разработке приложений.

Недостатки:

· Это несколько сложновато для изучения, а чрезмерное использование может привести к проблемам управления или другим проблемам.

· Многие возможные ошибки из процесса компиляции перемещаются в процесс выполнения программы.

· Внедрения зависимостей во фреймворках реализовано с помощью рефлексии или динамического программирования. Это может помешать использованию автоматизации разработки с помощью IDE, например, будет сложно воспользоваться функциями «найти ссылки», «показать иерархию вызовов» и будет сложно заниматься безопасно рефакторингом.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.