Junior — Middle
Czym różnią się wzorce Repository i Facade pod względem celu i realizacji?
sobes.tech AI
Odpowiedź od AI
Wzorce Repository i Facade służą różnym celom i różnią się pod względem przeznaczenia i implementacji:
-
Repository
- Cel: abstrakcyjnie dostęp do danych, zapewnia interfejs do pracy z kolekcją obiektów (np. z bazy danych).
- Implementacja: kapsułkuje logikę wyboru, dodawania, aktualizacji i usuwania danych, ukrywając szczegóły przechowywania.
- Przykład: IRepository<T> z metodami Add, Remove, Find itp.
-
Facade
- Cel: upraszcza interakcję z złożonym podsystemem, zapewniając prosty interfejs.
- Implementacja: łączy wywołania kilku klas lub podsystemów w jedną metodę lub klasę, ukrywając złożoność.
- Przykład: klasa wywołująca metody kilku serwisów do wykonania jednej operacji biznesowej.
Wynik: Repository koncentruje się na zarządzaniu danymi i ich przechowywaniu, a Facade na upraszczaniu interakcji z zestawem złożonych komponentów.
Przykład kodu w 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);
}
}
W ten sposób wzorce służą różnym celom i często są używane razem do budowania czystej architektury.