1
resposta

Padrão decorator

Em relação ao padrão decorator, eu fiquei em duvida, pois temos duas classes abstratas: InputStream e Reader. No caso usamos a classe que que implementa o InputStream para receber os dados de alguma forma(arquivo, rede ou sistema) e as classes que implementam Reader para transforma os dados binários em chars e os chars em Strings. O padrão decorator não necessariamente precisa ter todas suas classes implementando e trabalhando com classes que implementam a mesma interface ?

1 resposta

Ola Pablo.

Então, não há uma associação direta de herança/implementação entre Reader e InputStream. Veja essa imagem da hierarquia: https://media.cheggcdn.com/media/4e0/4e0ff853-b46c-4d93-b777-0320b74142fc/phpMnvheD.png. Voce também pode ver na API do Reader quais interfaces ele implementa https://docs.oracle.com/javase/8/docs/api/java/io/Reader.html

Ele usa decorator justamente porque dentro de Reader, contem atributo de InputStream, e assim, ele pode usa-lo para fazer algo mais especifico sem depender de todos os métodos daquela interface (e usar somente o que ele precisa).