Vimos que uma interface pode ser vista como um protocolo, de forma que todos as classes que implementarem a interface atenderão aos requisitos mínimos necessários para realizar uma determinada funcionalidade.

No exemplo do cliente, poderíamos fazer a seguinte alteração no modelo:

Que seria obtido alterando-se o método imprimeCliente(), como segue:

Public void imprimeCliente(dispositivo screen){
        screen. limpaTela();
        …
}

E a interface dispositivo poderia ser declarada como segue:

public interface dispositivo{
	public void limpaTela();
}

Por fim, teríamos que alterar a declaração da classe tela de forma a implementar a interface dispositivo:

class tela implements dispositivo{
       public void limpaTela(){
           ...
       }
}

Podemos perceber que agora não existe mais a dependência da classe cliente com a classe tela. Na verdade, agora o método imprimeCliente poderá receber qualquer tipo de objeto que implemente a interface dispositivo. Essa solução aumenta a flexibilidade e usabilidade dessa classe.

Copyright © 2014 AIEC.