Seja, Bem-Vindo

Seja, Bem Vindo

terça-feira, 10 de julho de 2012

O padrão Fachada



     O Padrão Facade que é simples de ser aplicado e que traz grandes benefícios aos projetos é dito como sendo um padrão estrutural e está entre os 23 padrões de projeto do GoF (Gang of Four).

Entende-se por padrão estrutural todo padrão de projeto que trata da associação entre classes e objetos.

Como o nome sugere Facade, é realmente uma fachada, podemos fazer a seguinte analogia, quando caminhamos em frente a um prédio com uma bela fachada, vemos as belas janelas as paredes bem decoradas, ou seja um ambiente bem amigável, e ignoramos toda a complexidade por trás da obra, a quantidade de salas, todas as empresas que estão neste prédio, deste modo o Facade também age nos projetos de software, dentre seus benefícios, alguns são:

 - Reduz a complexidade de uma api, liberando acesso a métodos de alto nível encapsulando os demais.
 - Produz uma interface comum e simplificada.
 - Pode encapsular uma ou mais interfaces mal projetadas em uma mais concisa.
 - Reduz drasticamente o acoplamento entre as camadas do projeto.


Veja o Exemplo da Classe Fachada!

package Camadas;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import Classes.Agenda;
import Classes.Cliente;
import Classes.Funcionario;
import Classes.Produto;
import Classes.Servico;
import Classes.Venda;
import java.util.ArrayList;

/**
 *
 * @author GOVEIA
 */
public class Fachada implements
     
        InterfaceAgenda,
        IntefaceCliente,
        InterfaceFuncionario,
        InterfaceProduto,
        InterfaceServico,
        InterfaceVenda{

    private NegocioCliente negocioCliente;
    private NegocioFuncionario negocioFuncionario;
    private NegocioProduto negocioProduto;
    private NegocioServico negocioServico;
    private NegocioAgenda negocioAgenda;
    private NegocioVenda negocioVenda;
         
    private static Fachada instancia;

    public static Fachada obterInstancia() {
     
        if (instancia == null) {
            instancia = new Fachada();
        }
        return instancia;
    }

    private Fachada() {

        this.negocioCliente = new NegocioCliente();
        this.negocioFuncionario = new NegocioFuncionario();
        this.negocioProduto = new NegocioProduto();
        this.negocioServico = new NegocioServico();
        this.negocioAgenda = new NegocioAgenda();
        this.negocioVenda = new NegocioVenda();

    }

    // Fachada Cliente
    @Override
    public void cadastrar(Cliente cliente) throws Exception {
        this.negocioCliente.cadastrar(cliente);

    }

    @Override
    public void remover(Cliente cliente) throws Exception {
        this.negocioCliente.remover(cliente);
    }

    @Override
    public void alterar(Cliente cliente) throws Exception {
        this.negocioCliente.alterar(cliente);
    }

    @Override
    public ArrayList listarCliente() throws Exception {
        return this.negocioCliente.listarCliente();

    }

   @Override
    public ArrayList consultar(Cliente cliente) throws Exception {
        return this.negocioCliente.consultar(cliente);
 
    }

 
    // Fachada Funcionario
 

    @Override
    public void cadastrar(Funcionario funcionario) throws Exception {
        this.negocioFuncionario.cadastrar(funcionario);
    }

    @Override
    public void remover(Funcionario funcionario) throws Exception {
        this.negocioFuncionario.remover(funcionario);
    }

    @Override
    public void alterar(Funcionario funcionario) throws Exception {
        this.negocioFuncionario.alterar(funcionario);
    }

    @Override
    public ArrayList listarFuncionario() throws Exception {
        return this.negocioFuncionario.listarFuncionario();
    }

    @Override
    public ArrayList consultar(Funcionario funcionario) throws Exception {
        return negocioFuncionario.consultar(funcionario);
    }

 
 
 
 
    @Override
    public void cadastrar(Agenda agenda) throws Exception {
       this.negocioAgenda.cadastrar(agenda);
    }

    @Override
    public void remover(Agenda agenda) throws Exception {
       this.negocioAgenda.remover(agenda);
    }

    @Override
    public void alterar(Agenda agenda) throws Exception {
        this.negocioAgenda.alterar(agenda);
    }

    @Override
    public ArrayList listarAgenda() throws Exception {
       return  this.negocioAgenda.listarAgenda();
    }

    @Override
    public ArrayList consultar(Agenda agenda) throws Exception {
       return   this.negocioAgenda.consultar(agenda);
    }

 
 
 
 
    @Override
    public void cadastrar(Produto produto) throws Exception {
      this.negocioProduto.cadastrar(produto);
    }

    @Override
    public void remover(Produto produto) throws Exception {
        this.negocioProduto.remover(produto);
    }

    @Override
    public void alterar(Produto produto) throws Exception {
        this.negocioProduto.remover(produto);
    }

    @Override
    public ArrayList listarProduto() throws Exception {
        return  this.negocioProduto.listarProduto();
    }


   
     @Override
    public void cadastrar(Servico servico) throws Exception {
       this.negocioServico.cadastrar(servico);
    }

    @Override
    public void remover(Servico servico) throws Exception {
        this.negocioServico.remover(servico);
    }

    @Override
    public void alterar(Servico servico) throws Exception {
       this.negocioServico.alterar(servico);
    }

    @Override
    public ArrayList listaServico() throws Exception {
       return  this.negocioServico.listaServico();
    }

   
     @Override
    public void lancarVenda(Venda venda) throws Exception {
       this.negocioVenda.lancarVenda(venda);
    }

    @Override
    public void remover(Venda venda) throws Exception {
       this.negocioVenda.remover(venda);
    }
 
    @Override
    public ArrayList HistorioVendas() throws Exception {
        return this.negocioVenda.HistorioVendas();
    }

    @Override
    public ArrayList consultar(Venda venda) throws Exception {
        return  this.negocioVenda.consultar(venda);
    }

    @Override
    public ArrayList consultar(Produto produto) throws Exception {
        return this.negocioProduto.consultar(produto);
    }

    @Override
    public ArrayList consultar(Servico servico) throws Exception {
       return  this.negocioServico.consultar(servico);
    }

 
 }
 
 
 



 
 
 
 

Nenhum comentário:

Postar um comentário

Obrigado pela Visita !