Junior — Middle
Pode explicar o princípio de funcionamento do padrão Observer e em que cenários é utilizado?
sobes.tech IA
Resposta da IA
O padrão Observer implementa um mecanismo de subscrição no qual um objeto (observado) notifica muitos outros objetos (observadores) sobre alterações no seu estado. Isto permite separar a fonte de eventos dos manipuladores, garantindo um baixo acoplamento.
Cenários de uso:
- Implementação de sistemas de eventos, por exemplo, atualização da interface do utilizador ao alterar dados.
- Registo ou auditoria, quando é necessário reagir às alterações sem intervir no código principal.
- Em sistemas com plugins, onde os plugins subscrevem-se a eventos.
Exemplo em PHP:
interface Observer {
public function update($data);
}
class Subject {
private $observers = [];
private $state;
public function attach(Observer $observer) {
$this->observers[] = $observer;
}
public function setState($state) {
$this->state = $state;
$this->notify();
}
private function notify() {
foreach ($this->observers as $observer) {
$observer->update($this->state);
}
}
}
class ConcreteObserver implements Observer {
public function update($data) {
echo "Estado atualizado para: $data\n";
}
}
$subject = new Subject();
$observer = new ConcreteObserver();
$subject->attach($observer);
$subject->setState('novo estado');