Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Как описать паттерн Наблюдатель (Observer)?

Этот вопрос проверяет знание паттерна Наблюдатель, который используется для уведомления объектов о изменениях состояния другого объекта.

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

Паттерн Наблюдатель — это поведенческий паттерн проектирования, в котором объект (субъект) уведомляет другие объекты (наблюдатели) о изменении своего состояния. Это полезно для реализации систем обработки событий. В PHP паттерн Наблюдатель может быть реализован с помощью интерфейсов SplObserver и SplSubject из стандартной библиотеки.

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

Паттерн Наблюдатель используется для создания системы, где один объект (субъект) уведомляет другие объекты (наблюдателей) о своих изменениях, не зная, кто эти наблюдатели. Это идеальный паттерн для реализации событийных систем или подписки на изменения состояния.

 

Основные компоненты паттерна:

- Субъект (Subject): Это объект, который хранит состояние и уведомляет наблюдателей о его изменении.

- Наблюдатель (Observer): Это объект, который слушает изменения состояния субъекта и реагирует на эти изменения.

 

Пример реализации в PHP:

interface Observer {
    public function update($data);
}

class User implements Observer {
    public function update($data) {
        echo "User notified with data: " . $data;
    }
}

class RoleChange implements SplSubject {
    private $observers = [];
    private $role;

    public function attach(SplObserver $observer) {
        $this->observers[] = $observer;
    }

    public function detach(SplObserver $observer) {
        $this->observers = array_filter($this->observers, function($obs) use ($observer) {
            return $obs !== $observer;
        });
    }

    public function notify() {
        foreach ($this->observers as $observer) {
            $observer->update($this->role);
        }
    }

    public function setRole($role) {
        $this->role = $role;
        $this->notify();
    }
}


Паттерн Наблюдатель полезен для создания событийных систем, где изменения одного объекта уведомляют другие. В PHP для его реализации можно использовать встроенные интерфейсы SplObserver и SplSubject.

  • Аватар

    PHP Guru

    Mikhail Savin

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • PHP

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

#observer

#pattern

#subject

#spl

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

  • Аватар

    PHP Guru

    Mikhail Savin

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