Ce este
Șablonul 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 pe deplin 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 cu ordinea sa corectă. StartDay() ascunde întreaga 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 Go și rezultatul capturat
package main
import "fmt"
type Heater struct{}
func (Heater) On() { fmt.Println("încălzitor: încălzește la 21 de grade") }
type Lights struct{}
func (Lights) On() { fmt.Println("lumini: aprinse la 40%") }
type CoffeeMachine struct{}
func (CoffeeMachine) Brew() { fmt.Println("cafea: prepară espresso") }
// Fațada: o singură ușă simplă către tot subsistemul.
type House struct {
heater Heater
lights Lights
coffee CoffeeMachine
}
func (h House) StartDay() {
h.heater.On()
h.lights.On()
h.coffee.Brew()
}
func main() {
House{}.StartDay()
}
Când să îl folosești
Folosește-l atunci când apelanții repetă mereu aceiași pași cu un subsistem sau când vrei să expui o suprafață mică și stabilă peste una dezordonată ori care se schimbă des.
Renunță la el atunci când „subsistemul” este un singur tip 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ă într-un singur loc; subsistemul se poate schimba în spatele unei fațade stabile.
Dezavantaje: fațadele tind să crească până devin tipuri care fac de toate; o fațadă care ascunde prea mult îi împinge pe oameni să o ocolească.