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.