Inyeccion de Dependencias
Es basicamente, una relacion de asociacion que te llega por Constructor, Setter o de cualquier otra forma posible.
En vez de elegir de forma clara dentro de la clase que colaborador tienes, este te llega como parametro a un constructor o un setter.
En vez de acoplarte como clase concreta, te acoplas unicamente con una clase abstracta y esperas a que te pasen una clase concreta desde fuera, unicamente apegandote a los metodos de la clase abstracta.
En vez de composicion, se basa en una asociacion.