Sobes.tech
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');