conhecendo o decorator

11
Felipe Costa Maurício Linhares Rafael Gomes * FATEC-JP DM – 2010 - 2

Upload: mauricio-linhares

Post on 22-Jul-2015

596 views

Category:

Technology


0 download

TRANSCRIPT

Felipe Costa

Maurício Linhares

Rafael Gomes

* FATEC-JP DM – 2010 - 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;

Writer

OutputStreamWriter

StringWriter

PipedWriter

BufferedWriter

* 

* 

* 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?

* 

* 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;

* 

CryptoWriter

FileWriter

Writer

* 

* 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;

* 

* 

* 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;

* 

* 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;

*