1
resposta

Por que criar interface

Olá,

Eu meio que sempre tive essa dúvida e decidi tentar tirar agora. Eu acredito saber o como utilizar uma interface e para quê ela sirva, mas não entendo o motivo de utilizar..

Pergunta 1) Se eu tenho duas classes que tem as mesmas propriedades e mesma assinatura de métodos que por sua vez são implementados de acordo com sua necessidade, implementando uma interface, as classes continuarão a ter o mesmo código.. nada mudou além da obrigatoriedade de eu ter as devidas assinaturas nas classes. Então por qual motivo eu devia criar uma abstração se nas minhas classes nada mudou além de fazer a implementação? Caímos na questão da diminuição das dependências nas duas classes?

Pergunta 2) Num caso em que eu tenha uma terceira classe, ela precisa das mesmas propriedades mas não de todos os métodos da interface. É uma pratica ruim estar implementando essa interface sendo que terei a obrigatória escrita de métodos que serão inúteis a ela?

1 resposta

Olá, tudo bem?

Quando você cria uma interface e implementa essa interface em duas classes diferentes, você está criando um contrato que essas classes devem seguir. Isso significa que, independentemente de como cada classe implementa os métodos da interface, elas garantem que terão as mesmas assinaturas de métodos. Isso é útil quando você precisa tratar essas classes de forma genérica, sem se preocupar com a implementação específica de cada uma delas.

Por exemplo, imagine que você tem uma interface IMensagem com um método EnviarMensagem(). Você pode ter uma classe Email que implementa essa interface e outra classe SMS que também implementa a mesma interface. Agora, em um determinado ponto do seu código, você precisa enviar uma mensagem, mas não importa se é por email ou SMS. Você pode tratar essas classes de forma polimórfica, utilizando a interface IMensagem. Isso permite que você escreva um código mais flexível e reutilizável.

Além disso, o uso de interfaces também ajuda a diminuir as dependências entre as classes. Quando você programa voltado para interfaces, você está programando para abstrações, não para implementações específicas. Isso torna o código mais flexível e facilita a manutenção e evolução do sistema.

No caso de uma terceira classe que precisa de algumas propriedades, mas não de todos os métodos da interface, você pode considerar dividir a interface em interfaces menores, cada uma com um conjunto específico de métodos. Dessa forma, a terceira classe poderia implementar apenas as interfaces que são relevantes para ela. Isso permite uma maior granularidade no design do seu sistema e evita que você precise implementar métodos inúteis.

No entanto, é importante lembrar que o uso de interfaces deve ser feito de forma consciente e pensando na estrutura do seu sistema como um todo. Às vezes, pode ser necessário implementar uma interface completa, mesmo que alguns métodos não sejam utilizados em determinada classe. Isso pode ser necessário para manter a consistência do código ou para facilitar a manutenção futura.

Espero ter ajudado e bons estudos!