SlideShare uma empresa Scribd logo
1 de 15
Explicando Padrões de
Projeto
Padrões de Projeto Facade
Danilo Augusto
Leonardo Venancio
Tópicos que serão tratados
• Explicar o que é padrão de projeto Facade e onde ele é usado
• Apresentar as principais características de funcionamento desse
padrão
• Apresentar alguns exemplos e vantagens de tal Padrão de
Projeto
• Conclusão
Introdução
● Todos os Padrões de Projeto fazem parte da tecnologia
avançada de orientação a objetos
● Os Padrões de Projetos para software orientado a objetos
estão documentados no livro “Design Patterns Explained”
● O Padrão de Projeto Facade oculta toda a complexidade de
uma ou mais classes através de uma Fachada
● Com o Padrão Facade podemos simplificar a utilização de um
subsistema complexo apenas implementando uma classe que
fornece uma interface única e mais razoável, porém se
desejássemos acessar as funcionalidades de baixo nível do
sistema isso seria perfeitamente possível
Funcionamento
● O Padrão Facade fornece uma interface unificada para um
conjunto de interfaces em um subsistema.
● O Facade define uma interface de nível mais alto que facilita a
utilização do subsistema.
- De acordo com Gang of Four
DEfinição
Diagrama de Classe Padrão Facade
fonte:www.devmedia.com.br/padrao-de-projeto-facade-em-java/26476
Implementação
TestComputer
Cpu
HardDrive
FacadeComputer Memory
IMPLEMENTAÇÃOpublic class Cpu {
public boolean start() {
System.out.println("Ligando");
return true;
}
public boolean finish(){
System.out.println("Desligando");
return false;
}
public class Memory {
public void load() {
System.out.println("Carregando
dados da memória");
}
public void free() {
System.out.println("Liberando dados
da memória");
}
}
IMPLEMENTAÇÃO
public class HardDrive {
public void read() {
System.out.println("Lendo dados
do HD");
}
public void write(String dados) {
System.out.println("Escrevendo dados no
HD");
}
}
IMPLEMENTAÇÃO
public class FacadeComputer {
private Cpu cpu = null;
private Memory memory = null;
private HardDrive hardDrive = null;
public FacadeComputer(Cpu cpu, Memory memory, HardDrive
hardDrive) {
this.cpu = cpu;
this.memory = memory;
this.hardDrive = hardDrive;
}
IMPLEMENTAÇÃO
public void desligarComputador(){
cpu.free();
memory.free();
cpu.finish();
System.out.println();
}
public void ligarComputador() {
cpu.start();
cpu.load();
memory.load();
hardDrive.read();
cpu.execute("componentes
iniciais");
System.out.println();
}
Vantagens de Usar o Padrão Facade
● Algumas novas funcionalidades do sistema poderiam ser
modificadas apenas na classe Facade e não em diversos
pontos
● Simplifica uma interface tornando-a muito mais simples e
unifica um conjunto de classes de um subsistema mais
complexo
Conclusão
● A maior utilidade do Projeto Facade
● A maior vantagem do Projeto Facad
Bibliografia
● Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Head First
Design Patterns. O'Reilly Media, 2004.
● Addison Wesley - Design Patterns Explained, 2001
Obrigado!

Mais conteúdo relacionado

Mais procurados

Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Roberto Soares
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxLuiz Francisco Bozo
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Gustavo Pereira
 
Instalando nx server no ubuntu 9_10
Instalando nx server no ubuntu 9_10Instalando nx server no ubuntu 9_10
Instalando nx server no ubuntu 9_10limafricke
 
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSLMinicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSLfgsl
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVCBenicio Ávila
 
Invasaocom exploits
Invasaocom exploitsInvasaocom exploits
Invasaocom exploitsNauber Gois
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Ferramentas de ataques
Ferramentas de ataquesFerramentas de ataques
Ferramentas de ataquesCarlos Veiga
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMakePaulo Remoli
 
Dojo - Arquitetura flexível e escalável
Dojo - Arquitetura flexível e escalávelDojo - Arquitetura flexível e escalável
Dojo - Arquitetura flexível e escalávelCesarCanoastec
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosCaio Cutrim
 
DUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para DelphiDUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para DelphiRenan Frutuozo
 
Tutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunelTutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunelManim Edições
 
Vps manager 2.0 documentação e intalação
Vps manager 2.0   documentação e intalaçãoVps manager 2.0   documentação e intalação
Vps manager 2.0 documentação e intalaçãoManim Edições
 
DKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportDKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportRômulo Jales
 
MÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUD
MÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUDMÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUD
MÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUDOrlindo Saraiva
 

Mais procurados (19)

Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
 
Instalando nx server no ubuntu 9_10
Instalando nx server no ubuntu 9_10Instalando nx server no ubuntu 9_10
Instalando nx server no ubuntu 9_10
 
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSLMinicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
 
Vírus no Linux
Vírus no LinuxVírus no Linux
Vírus no Linux
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Invasaocom exploits
Invasaocom exploitsInvasaocom exploits
Invasaocom exploits
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Ferramentas de ataques
Ferramentas de ataquesFerramentas de ataques
Ferramentas de ataques
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMake
 
Dojo - Arquitetura flexível e escalável
Dojo - Arquitetura flexível e escalávelDojo - Arquitetura flexível e escalável
Dojo - Arquitetura flexível e escalável
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
 
DUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para DelphiDUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para Delphi
 
Tutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunelTutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunel
 
Vps manager 2.0 documentação e intalação
Vps manager 2.0   documentação e intalaçãoVps manager 2.0   documentação e intalação
Vps manager 2.0 documentação e intalação
 
DKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportDKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module Support
 
MÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUD
MÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUDMÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUD
MÓDULO I - PREPARANDO O AMBIENTE GROCERY CRUD
 

Semelhante a Padrão de Projeto Facade

Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersElias Nogueira
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoEmbarcados
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma javaJunior Souza
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android EmbarcadoOdair Sousa
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsHerval Freire
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 

Semelhante a Padrão de Projeto Facade (20)

Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Aula1
Aula1Aula1
Aula1
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containers
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Aula1
Aula1Aula1
Aula1
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Manual
ManualManual
Manual
 
Java1
Java1Java1
Java1
 

Último

Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 
Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06AndressaTenreiro
 
apresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaapresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaWilliamCruz402522
 
NR10 - Treinamento LOTO - 2023.pp tx
NR10 - Treinamento LOTO - 2023.pp     txNR10 - Treinamento LOTO - 2023.pp     tx
NR10 - Treinamento LOTO - 2023.pp txrafaelacushman21
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 

Último (7)

Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 
Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06
 
apresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaapresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aula
 
NR10 - Treinamento LOTO - 2023.pp tx
NR10 - Treinamento LOTO - 2023.pp     txNR10 - Treinamento LOTO - 2023.pp     tx
NR10 - Treinamento LOTO - 2023.pp tx
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 

Padrão de Projeto Facade

  • 1. Explicando Padrões de Projeto Padrões de Projeto Facade Danilo Augusto Leonardo Venancio
  • 2. Tópicos que serão tratados • Explicar o que é padrão de projeto Facade e onde ele é usado • Apresentar as principais características de funcionamento desse padrão • Apresentar alguns exemplos e vantagens de tal Padrão de Projeto • Conclusão
  • 3. Introdução ● Todos os Padrões de Projeto fazem parte da tecnologia avançada de orientação a objetos ● Os Padrões de Projetos para software orientado a objetos estão documentados no livro “Design Patterns Explained”
  • 4. ● O Padrão de Projeto Facade oculta toda a complexidade de uma ou mais classes através de uma Fachada ● Com o Padrão Facade podemos simplificar a utilização de um subsistema complexo apenas implementando uma classe que fornece uma interface única e mais razoável, porém se desejássemos acessar as funcionalidades de baixo nível do sistema isso seria perfeitamente possível Funcionamento
  • 5. ● O Padrão Facade fornece uma interface unificada para um conjunto de interfaces em um subsistema. ● O Facade define uma interface de nível mais alto que facilita a utilização do subsistema. - De acordo com Gang of Four DEfinição
  • 6. Diagrama de Classe Padrão Facade fonte:www.devmedia.com.br/padrao-de-projeto-facade-em-java/26476
  • 8. IMPLEMENTAÇÃOpublic class Cpu { public boolean start() { System.out.println("Ligando"); return true; } public boolean finish(){ System.out.println("Desligando"); return false; } public class Memory { public void load() { System.out.println("Carregando dados da memória"); } public void free() { System.out.println("Liberando dados da memória"); } }
  • 9. IMPLEMENTAÇÃO public class HardDrive { public void read() { System.out.println("Lendo dados do HD"); } public void write(String dados) { System.out.println("Escrevendo dados no HD"); } }
  • 10. IMPLEMENTAÇÃO public class FacadeComputer { private Cpu cpu = null; private Memory memory = null; private HardDrive hardDrive = null; public FacadeComputer(Cpu cpu, Memory memory, HardDrive hardDrive) { this.cpu = cpu; this.memory = memory; this.hardDrive = hardDrive; }
  • 11. IMPLEMENTAÇÃO public void desligarComputador(){ cpu.free(); memory.free(); cpu.finish(); System.out.println(); } public void ligarComputador() { cpu.start(); cpu.load(); memory.load(); hardDrive.read(); cpu.execute("componentes iniciais"); System.out.println(); }
  • 12. Vantagens de Usar o Padrão Facade ● Algumas novas funcionalidades do sistema poderiam ser modificadas apenas na classe Facade e não em diversos pontos ● Simplifica uma interface tornando-a muito mais simples e unifica um conjunto de classes de um subsistema mais complexo
  • 13. Conclusão ● A maior utilidade do Projeto Facade ● A maior vantagem do Projeto Facad
  • 14. Bibliografia ● Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Head First Design Patterns. O'Reilly Media, 2004. ● Addison Wesley - Design Patterns Explained, 2001

Notas do Editor

  1. De acordo com a Gang of Four. http://www.devmedia.com.br/padrao-de-projeto-facade-em-java/26476