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);
// Հաճախորդի համար շփումը զգալիորեն պարզվում է
Ֆասադը ավելացնում է նոր ֆունկցիոնալություն՝ միայն դելեգատորելով համապատասխան ենթահամակարգի օբյեկտներին, տրամադրելով հարմար մուտքի կետ։