Ce este
Șablonul Facade (fațadă) pune o singură ușă simplă în fața unui subsistem complicat. În spatele ușii, mai multe părți colaborează în ordinea corectă; în fața ei, apelantul face un singur apel.
Subsistemul rămâne complet disponibil pentru cei care au nevoie de detalii — fațada este o comoditate, nu un zid.
Exemplu: un singur apel începe ziua
Încălzire, lumini, espressor — trei părți, fiecare cu propria interfață și cu ordinea sa corectă. startDay() ascunde coregrafia în spatele unui singur apel.
O singură ușă simplă
Apelantul scrie o singură linie; fațada cunoaște ordinea (mai întâi încălzirea, la final cafeaua). Dacă rutina se schimbă, se schimbă doar fațada.
Ieșire: script PHP
<?php
class Heater {
public function on(): void {
echo "încălzire: se încălzește la 21 de grade\n";
}
}
class Lights {
public function on(): void {
echo "lumini: aprinse la 40%\n";
}
}
class CoffeeMachine {
public function brew(): void {
echo "cafea: se prepară espresso\n";
}
}
// Fațada: o singură ușă simplă către tot subsistemul.
class House {
public function __construct(
private Heater $heater = new Heater(),
private Lights $lights = new Lights(),
private CoffeeMachine $coffee = new CoffeeMachine(),
) {}
public function startDay(): void {
$this->heater->on();
$this->lights->on();
$this->coffee->brew();
}
}
(new House())->startDay();
Când să îl folosești
Folosește-l când apelanții repetă mereu același dans în mai mulți pași cu un subsistem sau când vrei să expui o suprafață mică și stabilă peste una încurcată sau schimbătoare.
Renunță la el când „subsistemul” este o singură clasă cu trei metode. O fațadă peste ceva deja simplu adaugă doar distanță.
Avantaje și dezavantaje
Avantaje: apelanții primesc un singur apel simplu; ordinea corectă există exact într-un singur loc; subsistemul se poate schimba în spatele unei fațade stabile.
Dezavantaje: fațadele tind să crească în clase care fac totul; o fațadă care ascunde prea mult îi împinge pe oameni să o ocolească.