Какие знаешь паттерны проектирования · PHP Backend — JobPilot

Какие знаешь паттерны проектирования

PHP Backend · 30%
Вопрос 14 / #
Пример ответа

1) Короткий ответ
Знаю основные паттерны проектирования, которые делятся на три категории: порождающие, структурные и поведенческие, и применяю их для создания масштабируемого кода.

2) Основные паттерны (список)

  • Порождающие:

    • Singleton — гарантирует один экземпляр класса (например, для подключения к БД)

    • Factory Method — создание объектов через подклассы

    • Abstract Factory — создание семейств связанных объектов

    • Builder — пошаговое создание сложных объектов

  • Структурные:

    • Adapter — совмещение несовместимых интерфейсов

    • Decorator — динамическое добавление функциональности

    • Facade — упрощенный интерфейс к сложной системе

    • Composite — работа с древовидными структурами

  • Поведенческие:

    • Strategy — инкапсуляция алгоритмов

    • Observer — уведомление об изменениях

    • Command — инкапсуляция запросов как объектов

5) Пример паттерна Factory Method

php

Copy

Download

interface Notification {
    public function send(string $message): void;
}

class EmailNotification implements Notification {
    public function send(string $message): void {
        echo "Email: $message";
    }
}

class SMSNotification implements Notification {
    public function send(string $message): void {
        echo "SMS: $message";
    }
}

abstract class NotificationFactory {
    abstract public function createNotification(): Notification;
    
    public function sendAlert(string $message): void {
        $notification = $this->createNotification();
        $notification->send($message);
    }
}

class EmailFactory extends NotificationFactory {
    public function createNotification(): Notification {
        return new EmailNotification();
    }
}

// Использование
$factory = new EmailFactory();
$factory->sendAlert("Ваш заказ готов!");

6) Follow-up вопросы

  • Когда использовать Abstract Factory вместо Factory Method?Семейства объектов.

  • В чем минус Singleton?Глобальное состояние.

7) Практический совет

  1. Реализуйте паттерн Strategy для системы скидок: создайте интерфейс DiscountStrategy с классами PercentageDiscount и FixedDiscount.

  2. Найдите в своем коде сложный конструктор и перепишите его используя Builder для улучшения читаемости.

PHP Backend
Junior
30%
Навигация
Что такое MVC
Следующий: Что такое интерфейсы
Предыдущий: Что такое MVC

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.