Sobes.tech
Junior — Middle

Pode explicar as principais diferenças entre os padrões Adapter, Facade e Proxy e em que situações é melhor usá-los?

sobes.tech IA

Resposta da IA

As principais diferenças entre os padrões Adapter, Facade e Proxy:

  • Adapter (Adaptador): Permite que objetos com interfaces incompatíveis trabalhem juntos. Converte a interface de uma classe na interface esperada pelo cliente.

    • Usado quando é necessário integrar uma classe existente com uma nova interface.
  • Facade (Fachada): Fornece uma interface simplificada para um subsistema complexo, ocultando sua complexidade interna.

    • Usado para simplificar a interação com um grande número de classes.
  • Proxy (Proxy): Controla o acesso a outro objeto, podendo adicionar lógica adicional (por exemplo, inicialização preguiçosa, cache, segurança).

    • Usado quando é necessário gerenciar o acesso ou adicionar comportamento sem modificar o objeto original.

Exemplos de situações:

  • Adapter: integração de uma API antiga com uma nova interface.
  • Facade: fornecer uma API simples para uma biblioteca complexa.
  • Proxy: implementação de carregamento diferido de um recurso ou controle de acesso.

Exemplo de Adapter em Java:

interface Alvo {
    void requisicao();
}

class Adaptado {
    void requisicaoEspecifica() { System.out.println("Requisição específica"); }
}

class Adaptador implements Alvo {
    private Adaptado adaptado = new Adaptado();
    public void requisicao() {
        adaptado.requisicaoEspecifica();
    }
}