Junior — Middle
Използвали ли сте патърна 'наблюдател' в проектите си?
sobes.tech AI
Отговор от AI
Да, шаблонът "Наблюдател" (Observer) е използван в PHP проекти за реализиране на събитийна модел, при който един обект (обектът) уведомява много други обекти (наблюдателите) за промените в състоянието си.
Пример за използване в PHP:
interface Observer {
public function update(string $eventData);
}
class Subject {
private $observers = [];
public function attach(Observer $observer) {
$this->observers[] = $observer;
}
public function notify(string $eventData) {
foreach ($this->observers as $observer) {
$observer->update($eventData);
}
}
public function changeState() {
// Промяна на състоянието
$this->notify('Състоянието е променено');
}
}
class ConcreteObserver implements Observer {
public function update(string $eventData) {
echo "Получено уведомление: $eventData\n";
}
}
$subject = new Subject();
$observer = new ConcreteObserver();
$subject->attach($observer);
$subject->changeState();
Този подход помага да се отдели логиката за промяна на състоянието от реакцията на тези промени, като се подобрява разширяемостта и поддръжката на кода.