2. *
* Preciso criptografar e descriptografar texto de
forma fácil em Java;
* Preciso que isso funcione com arquivos, strings,
sockets, qualquer objeto que possa ser tratado
como um Reader ou Writer;
4. *
* Tanto Writer como Reader tem 6 subclasses
diretas apenas dentro das classes do JDK;
* Várias outras classes herdam dessas subclasses;
* Como adicionar uma nova funcionalidade
(criptografia) para todos os casos?
5. *
* Criar uma classe que “empacote” um Writer
qualquer, de forma que ela possa processar os
dados passados antes de repassar para o
destino;
* A classe aparenta ser um Writer, mas funciona
como um “filtro” ou pré-processador das
chamadas;
7. *
* O CryptoWriter faz o pré-processamento de
todas as chamadas e envia os dados já
criptografados pro próximo Writer;
* Ele não sabe qual o tipo do próximo objeto na
ordem de chamada;
* Ele não sabe quantos objetos ainda existem
“dentro” do objeto que ele recebeu;
9. *
* A motivação do decorator é adicionar novas
funcionalidades a uma família de objetos já
existente de forma que todos possam ter
acesso a ela independente da árvore de
herança.
* Toda a API de fluxos e arquivos em Java é feita
com decorators;
10. *
* APIs que usam decorators normalmente tem
um número grande de pequenas classes;
* A criação dos objetos fica mais complexa, já
que agora envolve colocar vários objetos um
dentro do outro;
* Não é simples descobrir os objetos que
“fazem” o decorator;