Sobes.tech
Middle

Fasad (Facade) nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Fasada, struktur bir dizayn nümunəsidir və bir alt sistemdəki interfeyslər dəstinə vahid bir interfeys təmin edir. Bu, yüksək səviyyəli bir interfeys müəyyən edir ki, bu da alt sistemin daxili strukturuna daxil olmadan onun istifadəsini sadələşdirir.

Fasadanın əsas məqsədləri:

  • Sadələşdirmə: Alt sistemin mürəkkəbliyini sadə bir interfeys arxasında gizlədir.
  • Bağlılığı azaltmaq: Müştəri kodu yalnız fasad ilə əlaqə qurur, birbaşa alt sistem komponentləri ilə deyil.
  • İnkapsulyasiya: Alt sistemin daxili strukturundakı dəyişikliklər, fasadı istifadə edən müştəri koduna daha az təsir edir.

İstifadə nümunəsi: Onlayn mağazada sifariş emalı sistemi təsəvvür edin, burada inventar, ödənişlər, çatdırılma və bildiriş alt sistemləri mövcuddur. Müştəri hər bir bu alt sistemin metodunu ayrıca çağırmaq yerinə, OrderProcessor adlı fasad yarada bilər.

// Fasad olmadan struktur nümunəsi
// Müştəri kodu mürəkkəb olur
// inventorySystem.checkStock(item);
// paymentSystem.processPayment(amount);
// shippingSystem.arrangeShipping(address);
// notificationSystem.sendConfirmation(email);

// Fasad ilə struktur nümunəsi
public class OrderProcessorFacade {

    private InventorySystem inventorySystem;
    private PaymentSystem paymentSystem;
    private ShippingSystem shippingSystem;
    private NotificationSystem notificationSystem;

    public OrderProcessorFacade() {
        this.inventorySystem = new InventorySystem();
        this.paymentSystem = new PaymentSystem();
        this.shippingSystem = new ShippingSystem();
        this.notificationSystem = new NotificationSystem();
    }

    public void placeOrder(Item item, double amount, String address, String email) {
        // Stok yoxlaması
        inventorySystem.checkStock(item);

        // Ödənişin emalı
        paymentSystem.processPayment(amount);

        // Çatdırılmanın təşkili
        shippingSystem.arrangeShipping(address);

        // Bildiriş göndərilməsi
        notificationSystem.sendConfirmation(email);

        // Əlavə məntiq və ya səhv idarəetməsi
    }
}

// Müştəri kodu fasaddan istifadə edir
// OrderProcessorFacade orderProcessor = new OrderProcessorFacade();
// orderProcessor.placeOrder(item, amount, address, email);

// Müştəri üçün qarşılıqlı əlaqə əhəmiyyətli dərəcədə sadələşir