Programar voltado para interface e não para a implementação, por quê?
Programar voltado para a interface, em vez de se concentrar na implementação, é uma abordagem que traz inúmeros benefícios. Quando você programa com foco nas interfaces, você está seguindo o princípio da programação orientada a interfaces (POI).
A programação voltada para a interface tem como objetivo principal separar a definição do comportamento de um componente da sua implementação específica. Isso significa que, em vez de depender de uma implementação concreta, seu código depende apenas das interfaces fornecidas pelo componente.
A principal vantagem de programar voltado para a interface é a flexibilidade. Ao se concentrar apenas nas interfaces, você pode alternar facilmente entre diferentes implementações que atendam às mesmas especificações da interface. Isso permite que você faça alterações significativas no código sem afetar partes do sistema que não dependem diretamente da implementação.
Além disso, programar voltado para a interface ajuda a promover a reutilização de código. Se você tiver várias implementações que fornecem o mesmo conjunto de interfaces, poderá usar qualquer uma delas sem modificar o código que depende dessas interfaces. Isso facilita a criação de sistemas modulares, onde as partes podem ser trocadas ou atualizadas independentemente.
Um exemplo prático dessa abordagem é o uso de bibliotecas ou frameworks. Quando você utiliza uma biblioteca ou framework, você se concentra na interface (ou API) fornecida por eles, em vez de se preocupar com os detalhes da implementação. Isso reduz a complexidade do desenvolvimento, pois você pode se concentrar apenas em como usar as funcionalidades oferecidas pela biblioteca ou framework.
Em resumo, programar voltado para a interface é uma abordagem eficaz para criar sistemas mais flexíveis e reutilizáveis. Isso facilita a manutenção do código, permitindo a troca de implementações sem afetar o restante do sistema. Além disso, essa abordagem promove a modularidade e reduz a dependência de detalhes de implementação.