SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
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;
* 

Mais conteúdo relacionado

Mais de Maurício Linhares

Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
Maurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
Maurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
Maurício Linhares
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
Maurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
Maurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
Maurício Linhares
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010
Maurício Linhares
 
Projeto e desenvolvimento de sistemas de informação 4 - computação em rede
Projeto e desenvolvimento de sistemas de informação   4 - computação em redeProjeto e desenvolvimento de sistemas de informação   4 - computação em rede
Projeto e desenvolvimento de sistemas de informação 4 - computação em rede
Maurício Linhares
 

Mais de Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010
 
Projeto e desenvolvimento de sistemas de informação 4 - computação em rede
Projeto e desenvolvimento de sistemas de informação   4 - computação em redeProjeto e desenvolvimento de sistemas de informação   4 - computação em rede
Projeto e desenvolvimento de sistemas de informação 4 - computação em rede
 
Extreme programming explicada
Extreme programming explicadaExtreme programming explicada
Extreme programming explicada
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Conhecendo o Decorator

  • 1. Felipe Costa Maurício Linhares Rafael Gomes *  FATEC-JP DM – 2010 - 2
  • 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;
  • 11. *