Sobes.tech
Junior — Middle

Quais são as diferenças entre os padrões Repository e Facade em termos de propósito e implementação?

sobes.tech IA

Resposta da IA

Os padrões Repository e Facade abordam tarefas diferentes e diferem em propósito e implementação:

  • Repository

    • Propósito: abstrai o acesso aos dados, fornecendo uma interface para trabalhar com uma coleção de objetos (por exemplo, de um banco de dados).
    • Implementação: encapsula a lógica de seleção, adição, atualização e remoção de dados, ocultando os detalhes do armazenamento.
    • Exemplo: IRepository<T> com métodos Add, Remove, Find, etc.
  • Facade

    • Propósito: simplifica a interação com um sistema complexo, fornecendo uma interface simples.
    • Implementação: combina chamadas a várias classes ou subsistemas em um único método ou classe, ocultando a complexidade.
    • Exemplo: uma classe que chama métodos de vários serviços para realizar uma operação de negócio.

Resultado: Repository foca na gestão e armazenamento de dados, enquanto Facade na simplificação da interação com um conjunto de componentes complexos.

Exemplo de código em C#:

// Repository
public interface IRepository<T> {
    void Add(T item);
    void Remove(T item);
    T FindById(int id);
}

// Facade
public class OrderFacade {
    private InventoryService inventory;
    private PaymentService payment;
    private ShippingService shipping;

    public OrderFacade() {
        inventory = new InventoryService();
        payment = new PaymentService();
        shipping = new ShippingService();
    }

    public void PlaceOrder(Order order) {
        inventory.Reserve(order);
        payment.Charge(order);
        shipping.Schedule(order);
    }
}

Dessa forma, os padrões servem a propósitos diferentes e são frequentemente usados juntos para construir uma arquitetura limpa.