DEV Community

Michel Moreira
Michel Moreira

Posted on

Padrão Observer em Python

O Observer é um padrão comportamental, o objetivo dele é criar um objeto com a função de notificar múltiplos objetos sobre qualquer mudança que aconteça no objeto que está sendo observado por eles.
O padrão consiste basicamente de um vetor que armazena uma lista de referências aos objetos interessados nos estados e métodos públicos que adicionam e removem objetos dessa lista.

class Subject(ABC):

    @abstractmethod
    def attach(self, observer: Observer) -> None:
        pass

    @abstractmethod
    def detach(self, observer: Observer) -> None:
        pass

    @abstractmethod
    def notify(self) -> None:
        pass

class Observer(ABC):
    @abstractmethod
    def update(self, subject: Subject) -> None:
        pass
Enter fullscreen mode Exit fullscreen mode

A classe Subject é uma interface que declara os métodos para controlar quem recebe as notificações e notificá-los.
A classe Observer implementa o método de atualização, usado pelo Subject. Os observadores reagirão as atualizações enviadas pelo objeto monitorado a qual foram acoplados.

A implementação em Python não tem nenhuma particularidade em relação a implementação em Java.


Referências
Padrões de Projeto (Diogo Moreira, 2020)
Mergulho nos Padrões de Projeto - v2020-1.14 (Alexander Shvets, 2020)
Os códigos usados como exemplo foram retirados do livro Mergulho nos Padrões de Projeto.

Top comments (0)