DEV Community

Giovanne Barbosa
Giovanne Barbosa

Posted on

SOLID - ISP

Princípio da segregação de interfaces

Nenhum cliente deve ser forçado a depender de métodos que não utiliza.

Onde podemos dizer que clientes são nossas classes e essas não devem depender de métodos que nunca vão utilizar.

Por exemplo:

Suponhamos que temos uma interface IBanhoPet com os métodos LimparPatas(), LimparAsas() e Secar() e criamos uma classe BanhoPardal e outra BanhoGato que implementam essa interface.

public interface IBanhoPet
{
    void LimparAsas();
    void LimparPatas();
    void Secar();
}
Enter fullscreen mode Exit fullscreen mode

A classe BanhoPardal utiliza todos os métodos que a interface nos diz para implementar. Já a classe BanhoGato não precisa utilizar o método LimparAsas(), afinal, gatos não possuem asas. Porém também não podemos deixar de implementá-lo, pois uma interface é como um contrato que nos obriga a utilizar todos os seus métodos. Logo, estamos ferindo o princípio da segregação de interfaces.

Solução:

Criamos uma interface IBanhoGato que possui os métodos LimparPatas() e Secar() e outra IBanhoAve que possui os mesmos métodos da IBanhoGato com a adição do método LimparAsas() e as nossas classes implementam as suas respectivas interfaces.

public interface IBanhoGato
{
    void LimparPatas();
    void Secar();
}
Enter fullscreen mode Exit fullscreen mode
public interface IBanhoAve
{
    void LimparAsas();
    void LimparPatas();
    void Secar();
}
Enter fullscreen mode Exit fullscreen mode

Fácil, né!?

Discussion (0)