Принцип Dependency inversion
Модули верхних уровней не должны зависеть от деталей нижнего уровня. А оба этих уровней должны зависеть от деталей абстракций.
Позволяет отвязаться от конкретной реализации благодаря интерфейсу (протоколы)/дженерику.
Это про внедрение зависимостей в объект.
2.4.4.1 DRY Theme | Back To iOSWiki Contents | 2.4.4.3 KISS Theme