Sobes.tech
Middle

Kas ir fasāde (Facade)?

sobes.tech AI

Atbilde no AI

Fasāde ir strukturāls dizaina paraugs, kas nodrošina vienotu interfeisu uz subsistēmas interfeisiem. Tas definē augstā līmeņa interfeisu, kas atvieglo subsistēmas izmantošanu, neiejaucoties tās iekšējā struktūrā.

Galvenie fasādes mērķi:

  • Vienkāršošana: Slēpj sarežģītību aiz vienkāršas interfeisa.
  • Samazina saistību: Klienta kods sazinās tikai ar fasādi, nevis tieši ar subsistēmas komponentiem.
  • Enkapsulācija: Izmaiņas subsistēmas iekšējā struktūrā mazāk ietekmē klienta kodu, kas izmanto fasādi.

Piemērs: Iedomāsimies sarežģītu pasūtījuma apstrādes sistēmu interneta veikalā, kas ietver inventāra, maksājumu, piegādes un paziņojumu subsistēmas. Tā vietā, lai klients zvanītu katras no šīm subsistēmām atsevišķi, var izveidot OrderProcessor fasādi.

// Bez fasādes struktūras piemērs
// Klienta kods kļūst sarežģīts
// inventorySystem.checkStock(item);
// paymentSystem.processPayment(amount);
// shippingSystem.arrangeShipping(address);
// notificationSystem.sendConfirmation(email);

// Ar fasādes struktūras piemērs
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) {
        // Pārbaude
        inventorySystem.checkStock(item);

        // Maksājuma apstrāde
        paymentSystem.processPayment(amount);

        // Piegādes organizēšana
        shippingSystem.arrangeShipping(address);

        // Paziņojuma nosūtīšana
        notificationSystem.sendConfirmation(email);

        // Papildu loģika vai kļūdu apstrāde
    }
}

// Klienta kods, izmantojot fasādi
// OrderProcessorFacade orderProcessor = new OrderProcessorFacade();
// orderProcessor.placeOrder(item, amount, address, email);

// Klientam mijiedarbība būtiski vienkāršojas

Fasāde nesniedz jaunu funkcionalitāti, tā tikai deleģē izsaukumus atbilstošajiem subsistēmas objektiem, nodrošinot ērtu pieejas punktu.