Programação voltada a Interface, está ligada a boas práticas de programação.
Mais precisamente, a regra que diz, que devemos ter baixo acoplamento entre nossas classes.
Minimizar acoplamento, é um dos principios da programação OO.
Mais o que diabos é acoplamento afinal? de forma simplificada:
é o quão forte um classe está conectada, conhece a a implementação ou tem dependência de outra classe.
Por isso, quando utilizamos programação voltada a Interface, juntamente com outras boas práticas, como
single responsability e injeção de dependência, podemos conseguiur baixo acoplamento.
Porque ao invés de utilizar a instancia de uma classe diretamente, expondo assim sua implementação, podemos
injetar sua interface.
por exemplo. injetando a interface ICarro, ao invés, da classe Carro.
Minha classe sabe que tenho um método void andar(), e isso basta.
Não sei como o método andar() é implementado, e pouco me importa, só sei que ele existe.
Qual a vantagem disso tudo?
? Uma classe fracamente acoplada não é afetada (ou pouco afetada) por mudanças em outras classes
? Simples de entender isoladamente
? Facilita o Reuso