Кратко напишу так
Dependency inversion principle (DIP) - разрыв ЗАВИСИМОСТЕЙ через абстракцию
То есть, когда мы выводим интерфейс IA и скармлеваем потребителю B, мы отрываемся от зависимости, когда потребитель зависит от изменений конкретного класса A. А рассуждая далее, получаем, что логичней переименовать IA и IB, то есть клиент B определяет, что ему нужно от А:
B использует IB
A реализует IB
Dependency injection - механизм использующий DIP, DIP создает возможность использования DI
Inversion of control (IoC) - Don't call us, we'll call you (Hollywood principle) - принцип, когда основной поток управления (алгоритм) определён, и мы кастомизируем части. Частный случай, когда поток управления скрыт в базовом одном классе - паттерн Template Method. Более сложный вариант - модель Framework и частичная передача управления выполнения нашему приложению.
Очень жаль, что такие понятия путаются. А особенно это замечено в русской википедии. Ну и даже Роберт Мартин в своей книге попутал. Привязав голливудскую фразу к DIP. И вообще в его английском и русском варианте много неточностей, которые мы обнаружили коллективным разумом стади-групп.
Ссылки по теме:
- http://igor.quatrocode.com/2008/09/solid-top-5.html
суббота, 20 декабря 2008 г.
Dependency Inversion Principle, Dependency Injection и Inversion of Control
на 20:31
Ярлыки: архитектура
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий