Аналогія
Як увімкнути комп’ютер? Ви скажете: “Натиснути кнопку увімкнення”. Це тому, що ви використовуєте простий інтерфейс, наданий комп’ютером назовні. А в ньому відбувається дуже багато процесів. Простий інтерфейс для складної підсистеми – це фасад.
Стисло
Шаблон Фасад надає спрощений інтерфейс для складної підсистеми.
Вікіпедія
«Фасад» — це об’єкт, що надає спрощений інтерфейс для більшого тіла коду, наприклад бібліотеки класів.
Приклад
Створимо клас computer:
class Computer
{
public function getElectricShock()
{
echo "Ouch!";
}
public function makeSound()
{
echo "Beep beep!";
}
public function showLoadingScreen()
{
echo "Loading..";
}
public function bam()
{
echo "Ready to be used!";
}
public function closeEverything()
{
echo "Bup bup bup buzzzz!";
}
public function sooth()
{
echo "Zzzzz";
}
public function pullCurrent()
{
echo "Haaah!";
}
}
Тепер «фасад»:
class ComputerFacade
{
protected $computer;
public function __construct(Computer $computer)
{
$this->computer = $computer;
}
public function turnOn()
{
$this->computer->getElectricShock();
$this->computer->makeSound();
$this->computer->showLoadingScreen();
$this->computer->bam();
}
public function turnOff()
{
$this->computer->closeEverything();
$this->computer->pullCurrent();
$this->computer->sooth();
}
}
Використання:
$computer = New ComputerFacade(New Computer());
$computer->turnOn(); // Ouch! Beep beep! Loading.. Ready to be used!
$computer->turnOff(); // Bup bup buzzz! Haah! Zzzzz