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

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 OfficeDropMaurício Linhares
 
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 OfficeDropMaurí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çõesMaurí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 polimorfismoMaurí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 abstratosMaurí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 bibliotecasMaurí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âmetrosMaurício Linhares
 
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 nuvemMaurí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 2010Maurí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 2010Maurí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 redeMaurí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
 

Criptografar texto Java usando padrã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. *