Путь к Dependency Injection
Проблематика
-
Модульность
-
Управление зависимостями
-
Зависимости через абстракцию
Когда-то очень давно было:
А теперь почти всегда:
Пример для понятности:
Способы удовлетворения
зависимостей
История развития
* с точки зрения PHP-разработчика
0. new в любом месте
– самая высокая связанность между модулями
+ создание объектов по требованию
– повторное использование объектов
– много шаблонного кода
1. new и передача по стеку
+ низкая связанность между модулями
– создание по требованию
+ повторное использование объектов
– высокая сложность, много вспомогательного кода
2. Singleton, местами Factory + передача по стеку
– высокая связанность между модулями
+ создание по требованию
+ повторное использование объектов
+ низкая сложность, мало шаблонного или вспомогательного кода
– сложность тестирования
+ статический контроль
3. Registry
+ низкая связанность между модулями
– зависимость на центральном объекте
– создание по требованию
+ повторное использование объектов
+ низкая сложность, мало шаблонного или вспомогательного кода
+ упрощенное тестирование
– отсутствие статического контроля
4. Service Locator
+ низкая связанность между модулями
– зависимость на центральном объекте
+ создание по требованию
+ повторное использование объектов
+ низкая сложность, мало шаблонного или вспомогательного кода
+ упрощенное тестирование
– отсутствие статического контроля
5. Dependency Injection
+ низкая связанность между модулями
+ нет зависимости на центральном объекте
+ создание по требованию
+ повторное использование объектов
+ низкая сложность, мало шаблонного или вспомогательного кода
+ упрощенное тестирование
– отсутствие статического контроля
– сложность реализации, понимания, контроля
Всему свое место
* но стремиться надо к лучшему
Спасибо
Путь к Dependency Injection
By Valer Leontyev
Путь к Dependency Injection
- 2,531