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);

// Հաճախորդի համար շփումը զգալիորեն պարզվում է

Ֆասադը ավելացնում է նոր ֆունկցիոնալություն՝ միայն դելեգատորելով համապատասխան ենթահամակարգի օբյեկտներին, տրամադրելով հարմար մուտքի կետ։