Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: design, patterns, strategy, observer

Какие паттерны проектирования знаете? Где применяли?

Вопрос проверяет знание и практический опыт применения паттернов проектирования в PHP-разработке.

Короткий ответ

Паттерны проектирования - это проверенные решения распространенных проблем в разработке. Адаптер используется для совместимости разных интерфейсов, Фабрика создает объекты без указания точного класса, Стратегия позволяет менять алгоритмы поведения, Observer реализует систему событий. Эти паттерны помогают создавать гибкий, поддерживаемый и масштабируемый код в реальных проектах.

Длинный ответ

Основные паттерны проектирования и их применение

Адаптер (Adapter)

  • Назначение: Преобразование интерфейса одного класса в интерфейс, ожидаемый клиентом

  • Применение в PHP: Интеграция сторонних библиотек, работа с разными API

  • Пример:

php

interface PaymentProcessor {
    public function process(float $amount): bool;
}

class PayPalAdapter implements PaymentProcessor {
    private $paypal;
    
    public function __construct(PayPal $paypal) {
        $this->paypal = $paypal;
    }
    
    public function process(float $amount): bool {
        return $this->paypal->sendPayment($amount);
    }
}

Фабрика (Factory)

  • Назначение: Создание объектов без указания конкретного класса

  • Применение в PHP: Создание различных типов пользователей, обработчиков платежей

  • Пример:

php

class UserFactory {
    public static function create(string $type): User {
        return match($type) {
            'admin' => new AdminUser(),
            'customer' => new CustomerUser(),
            default => new GuestUser()
        };
    }
}

Стратегия (Strategy)

  • Назначение: Определение семейства алгоритмов и их взаимозаменяемость

  • Применение в PHP: Различные способы расчета доставки, системы скидок

  • Пример:

php

interface DiscountStrategy {
    public function calculate(float $amount): float;
}

class PercentageDiscount implements DiscountStrategy {
    public function calculate(float $amount): float {
        return $amount * 0.1; // 10% скидка
    }
}

class FixedDiscount implements DiscountStrategy {
    public function calculate(float $amount): float {
        return 50.0; // Фиксированная скидка
    }
}

Наблюдатель (Observer)

  • Назначение: Создание механизма подписки для уведомления объектов об изменениях

  • Применение в PHP: Системы событий, уведомления, логирование

  • Пример:

php

class Order {
    private $observers = [];
    
    public function attach(Observer $observer): void {
        $this->observers[] = $observer;
    }
    
    public function complete(): void {
        // логика завершения заказа
        foreach ($this->observers as $observer) {
            $observer->update($this);
        }
    }
}

Практическое применение в проектах

E-commerce проекты:

  • Стратегия для различных способов оплаты

  • Фабрика для создания типов товаров

  • Наблюдатель для системы уведомлений

CMS системы:

  • Адаптер для работы с разными базами данных

  • Фабрика для создания типов контента

  • Декоратор для модификации вывода контента

API разработка:

  • Адаптер для форматов ответа (JSON, XML)

  • Стратегия для методов аутентификации

  • Наблюдатель для логирования запросов

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

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • PHP

    PHP

Ключевые слова

#design

#patterns

#strategy

#observer

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.