O documento explica o padrão de projeto Facade, que oculta a complexidade de classes através de uma interface única. O Facade fornece uma interface de alto nível para simplificar o uso de um subsistema complexo. O documento apresenta exemplos de implementação do Facade em Java e suas vantagens, como permitir modificações focadas na classe Facade sem alterar outras classes.
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;
}
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