Egentlig ikke så meget. Når vi taler om patterns her, så er det faktisk bare navne, for metoder og måder at gøre tingene på, som vi betegner som almen praksis.
Facade pattern er betegnelsen for en klasse, som er designet til at være så brugervenlig som overhovedet muligt. Dvs. at alle de opgaver, som klassen godt selv kan udføre, bliver udført af klassen.
På den måde slipper brugeren af klassen for, at skulle skrive 500 linjer kode, for at få det ønskede resultat. Jeg giver dig herunder 2 eksempler, som viser dig hvad der menes i praksis.
Vores klasse (uden brug af facade pattern):<?php
class UdskrivNoget
{
public $navn, $alder, $adresse;
public function definerNavn($navn){
$this->navn = $navn;
}
public function definerAlder($alder){
$this->alder = $alder;
}
public function definerAdresse($adresse){
$this->adresse = $adresse;
}
public function udskrivResultat(){
echo "Hej mit navn er ".$this->navn."! Jeg er ".$this->alder." år gammel og bor på ".$this->adresse.".";
}
}
$UN = new UdskrivNoget();
$UN->definerNavn("Anders Andersen");
$UN->definerAlder(20);
$UN->definerAdresse("Æblevej 1, 2100 København");
$UN->udskrivResultat();
?>
Som du kan se, er det her en meget upraktisk klasse. Hvordan kan vi løse det, uden at skulle omskrive hele klassen? Tjah, vi kan jo prøve at gøre den lidt mere enkel at benytte. :)
Vores klasse (med brug af facade pattern):<?php
class UdskrivNoget
{
public $navn, $alder, $adresse;
public function __construct($navn, $alder, $adresse){
$this->definerNavn($navn);
$this->definerAlder($alder);
$this->definerAdresse($adresse);
$this->udskrivResultat();
}
public function definerNavn($navn){
$this->navn = $navn;
}
public function definerAlder($alder){
$this->alder = $alder;
}
public function definerAdresse($adresse){
$this->adresse = $adresse;
}
public function udskrivResultat(){
echo "Hej mit navn er ".$this->navn."! Jeg er ".$this->alder." år gammel og bor på ".$this->adresse.".";
}
}
$UN = new UdskrivNoget("Anders Andersen", 20, "Æblevej 1, 2100 København");
?>
Som du kan se, så er det den samme klasse. Den udfører også den samme opgave, men vi sørger for at alle de her funktioner bliver kaldt internt, og derfor skåner brugeren for det.
Håber det hjælper dig til at forstå. ;)