Sobes.tech
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.