Тема: Принцип инверсии зависимости (Dependency Inversion Principle)
Принцип Инверсии Зависимости
Оригинал: The Dependency Inversion Principle
В этой статья я хотел бы поговорить об элементе D из набора принципов и паттернов S.O.L.I.D. Принципы и паттерны, относящиеся к S.O.L.I.D. можно считать краеугольными камнями «хорошего» проектирования приложений. В данном контексте D представляет принцип инверсии зависимости (dependency inversion). В предыдущей статья я рассказывал про элемент S представляющий принцип одной ответственности (single responsibility).
Что такое «Плохое проектирование»?
Давайте сначала немного поговорим о том, что такое плохое проектирование. Можно ли что-то называть плохим проектированием, если кто-то заявляет:
Я бы сделал это по-другому..
Простите, но это нельзя назвать адекватной оценкой качества проекта! Это заявление основывается исключительно на личных предпочтениях. Так что давайте подыщем более качественные критерии для определения плохого проектирования. Если в системе проявляются все или некоторые из следующих особенностей, тогда мы может называть эту систему плохо спроектированной:
• Система не обладает гибкостью (rigit): очень трудно изменить какую-то часть системы, так чтобы это не затронуло слишком много других ее частей.
• Система ненадежна (fragile): при изменении какой-либо отдельной части, другие части системы перестают корректно работать.
• Система не или ее часть имеет много связей (immobile): очень трудно повторно использовать части системы в других приложения, поскольку они имеют много связей и зависимостей с другими частями приложения.