Sobes.tech
Middle

Фасад (Facade) деген эмне?

sobes.tech AI

AIден жооп

Фасад — бул структуралык дизайн үлгүсү, ал бир топ интерфейстерге бириккен интерфейсти камсыз кылат. Ал жогорку деңгээлдеги интерфейсти аныктайт, ал подсистеманы колдонууда жеңилдик берет, анын ички түзүлүшүнө кирбестен.

Фасаддын негизги максаттары:

  • Жөнөкөйлүк: Подсистеманын татаалдыгын жөнөкөй интерфейс аркылуу жашырат.
  • Туташтыкты азайтуу: Кардар коду гана фасад менен иштейт, түз эле подсистеманын компоненттери менен эмес.
  • Энкапсуляция: Подсистеманын ички түзүлүшүндөгү өзгөртүүлөр фасадды колдонгон кардар кодуна аз таасир этет.

Мисал: Интернет-дүкөндөгү заказ иштетүүчү татаал системаны элестетели, ал инвентаризация, төлөмдөр, жеткирүү жана кабарлоо подсистемдерин камтыйт. Кардар ар бир подсистемага өзүнчө методдорду чакырбай, OrderProcessor фасадын түзсө болот.

// Фасадсыз структуранын мисалы
// Кардар коду татаал болот
// inventorySystem.checkStock(item);
// paymentSystem.processPayment(amount);
// shippingSystem.arrangeShipping(address);
// notificationSystem.sendConfirmation(email);

// Фасад менен структуранын мисалы
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) {
        // Текшерүү
        inventorySystem.checkStock(item);

        // Төлөмдү иштетүү
        paymentSystem.processPayment(amount);

        // Жеткирүүнү уюштуруу
        shippingSystem.arrangeShipping(address);

        // Билдирүү жөнөтүү
        notificationSystem.sendConfirmation(email);

        // Кошумча логика же каталардын иштетилиши
    }
}

// Кардар коду фасадды колдонуу менен
// OrderProcessorFacade orderProcessor = new OrderProcessorFacade();
// orderProcessor.placeOrder(item, amount, address, email);

// Кардар үчүн өз ара аракеттешүү маанилүү түрдө жеңилдетилет

Фасад жаңы функция кошпойт, ал гана тиешелүү подсистеманын объекттерине чакырууларды делегирлеп, ыңгайлуу кирүү чекитин камсыздайт.