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