PHP Паттерн “Декоратор” (Decorator)
Позволяет добавлять объектам новые возможности без изменения их исходного кода. Он позволяет динамически изменять функциональность объекта во время выполнения программы. Декоратор обычно используется, когда у вас есть иерархия объектов, и вы хотите добавить новые функции на определенном уровне иерархии, не затрагивая другие уровни.
Пример использования паттерна “Декоратор”
class Camera
{
function takePicture()
{
echo "Taking picture...";
}
}
class MobilePhone
{
function makeCall()
{
echo "Making call...";
}
}
class CameraPhone extends Camera implements MobilePhone
{
}
// Теперь мы хотим добавить возможность записи видео для камеры в CameraPhone.
// Мы можем сделать это с помощью паттерна "Декоратор".
class VideoRecorder
{
private $camera;
function __construct(Camera $camera)
{
$this->camera = $camera;
}
// Теперь мы можем добавить метод записи видео в CameraPhone, используя декоратор.
Добавление функций к объектам: декоратор может использоваться для добавления новых функций к объектам без изменения исходного кода этих объектов.
Настройка поведения объектов: декоратор позволяет настраивать поведение объектов без необходимости изменения их исходного кода.
Кэширование результатов запросов: декоратор может кэшировать результаты запросов, чтобы уменьшить количество обращений к источнику данных.
Шифрование данных: декоратор может быть использован для шифрования данных перед их передачей через сеть.
Добавление логгирования: декоратор может добавлять функциональность логирования, чтобы отслеживать действия, происходящие с объектом.