Фасад (Facade) - це структурний патерн проектування, який надає простий і об'єднаний інтерфейс до великої підсистеми об'єктів. Він визначає високорівневий інтерфейс, який робить підсистему більш легкодоступною та зручною для використання.
Приведений нижче приклад покаже, як можна реалізувати Фасад на PHP. Уявімо, що ми маємо систему для відправлення повідомлень через різні канали (email, SMS, тощо).
<?php
// Підсистема для роботи з електронною поштою
class EmailSubsystem
{
public function sendEmail($to, $message)
{
echo "Відправлено електронне повідомлення на адресу $to: $message\n";
}
}
// Підсистема для роботи з SMS
class SMSSubsystem
{
public function sendSMS($number, $message)
{
echo "Відправлено SMS на номер $number: $message\n";
}
}
// Фасад для спрощення використання підсистем
class NotificationFacade
{
private $emailSubsystem;
private $smsSubsystem;
public function __construct()
{
$this->emailSubsystem = new EmailSubsystem();
$this->smsSubsystem = new SMSSubsystem();
}
// Метод для відправлення сповіщення через електронну пошту
public function sendEmailNotification($to, $message)
{
$this->emailSubsystem->sendEmail($to, $message);
}
// Метод для відправлення сповіщення через SMS
public function sendSMSNotification($number, $message)
{
$this->smsSubsystem->sendSMS($number, $message);
}
}
// Використання фасаду
$notificationFacade = new NotificationFacade();
$notificationFacade->sendEmailNotification('user@example.com', 'Привіт, це ваше електронне повідомлення!');
$notificationFacade->sendSMSNotification('123456789', 'Привіт, це ваше SMS повідомлення!');
?>
У цьому прикладі `NotificationFacade` служить вищим рівнем інтерфейсу для відправки сповіщень, об'єднуючи роботу з електронною поштою та SMS. Це дозволяє вам простіше використовувати підсистеми, не думаючи про деталі їх реалізації.