Путь к Dependency Injection

Проблематика

  1. Модульность

  2. Управление зависимостями

  3. Зависимости через абстракцию

Когда-то очень давно было:

А теперь почти всегда:

Пример для понятности:

Способы удовлетворения
зависимостей

История развития

* с точки зрения PHP-разработчика

0. new в любом месте

– самая высокая связанность между модулями

+ создание объектов по требованию

– повторное использование объектов

– много шаблонного кода

1. new и передача по стеку

+ низкая связанность между модулями

– создание по требованию

+ повторное использование объектов

– высокая сложность, много вспомогательного кода

2. Singleton, местами Factory + передача по стеку

– высокая связанность между модулями

+ создание по требованию

+ повторное использование объектов

+ низкая сложность, мало шаблонного или вспомогательного кода

– сложность тестирования

+ статический контроль

3. Registry

+ низкая связанность между модулями

– зависимость на центральном объекте

– создание по требованию

+ повторное использование объектов

+ низкая сложность, мало шаблонного или вспомогательного кода

+ упрощенное тестирование
– отсутствие статического контроля

4. Service Locator

+ низкая связанность между модулями

– зависимость на центральном объекте

+ создание по требованию

+ повторное использование объектов

+ низкая сложность, мало шаблонного или вспомогательного кода

+ упрощенное тестирование

– отсутствие статического контроля

5. Dependency Injection

+ низкая связанность между модулями

+ нет зависимости на центральном объекте

+ создание по требованию

+ повторное использование объектов

+ низкая сложность, мало шаблонного или вспомогательного кода

+ упрощенное тестирование

– отсутствие статического контроля

– сложность реализации, понимания, контроля

Всему свое место

* но стремиться надо к лучшему

Спасибо

Путь к Dependency Injection

By Valer Leontyev

Путь к Dependency Injection

  • 2,362