Ce este
Șablonul Fațadă (Facade) 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ălzitor, lumini, aparat de cafea — trei părți, fiecare cu propriul API și propria ordine corectă. start_day() ascunde această coregrafie în spatele unui singur apel.
O singură ușă simplă
Apelantul scrie o singură linie; fațada știe ordinea (mai întâi căldura, cafeaua la final). Dacă rutina se schimbă, se schimbă doar fațada.
Ieșire: program Python complet
class Heater:
def on(self):
print("încălzitor: se încălzește la 21 de grade")
class Lights:
def on(self):
print("lumini: aprinse la 40%")
class CoffeeMachine:
def brew(self):
print("cafea: se prepară espresso")
# Fațada: o singură ușă simplă către întregul subsistem.
class House:
def __init__(self):
self.heater = Heater()
self.lights = Lights()
self.coffee = CoffeeMachine()
def start_day(self):
self.heater.on()
self.lights.on()
self.coffee.brew()
House().start_day()
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 dezordonată sau în schimbare.
Renunță la el când „subsistemul” este o singură clasă cu trei metode. O fațadă peste ceva deja simplu doar adaugă distanță.
Avantaje și dezavantaje
Avantaje: apelanții primesc un singur apel simplu; ordinea corectă se află într-un singur loc; subsistemul se poate schimba în spatele unei fețe stabile.
Dezavantaje: fațadele tind să crească până devin clase care fac totul; o fațadă care ascunde prea mult îi împinge pe oameni să o ocolească.