Oi,
 
     A utilizadade das interfaces é estabelecer um protocolo básico entre classes, diminuindo o acoplamento e aumentando a manutenibilidade do sistema.
     Vamos imaginar um site de e-commerce onde será criado um componente Basket (carrinho de compras, sacola, etc, etc). Este componente precisará manipular objetos do tipo Product e, para que isso possa ser feito, tal objeto precisaria dos seguintes métodos em sua interface pública:
     - getProductId(),
     - getPrice(),
     - getWeight(),
     
     Qual a vantagem de criar uma interface BasketProduct definindo esta interface? 
     1. Sem se preocupar com a Basket, vc poderia mudar a vontade a implementação da sua classe Product;
     2. Sua Basket poderia manipular diversos tipos de Produto, desde que cada um desses produtos implemente esta interface. Vc nunca se preocupará com a Basket, apenas em garantir que sua classe implemente esses métodos. Aí vc diria: Mas isso eupoderia fazer sem interfaces, apenas usano métodos normais. Sim vc poderia, mas a questão é que não há garantia nenhuma de que a sua classe Product estaria correta. Caso vc tivesse adquirido o componente Basket, vc poderia implementar sua classe Produto sem alguns dos métodos necessários, bugando a solução.
     Conclusão: Em linhas gerais, uma interface é apenas uma boa prática de codificação que simplifica o entendimento do código, aumenta sua manutenibilidade e minimiza erros provenientes do uso de hierarquias de classes.
 
Espero tê-lo ajudado,
André
 

Responder a