Patrones de Diseño con Python (Observer)

Arian Ventura Rodríguez
1 min readMay 28, 2022

Observer es un patrón de diseño de comportamiento que permite a un objeto notificar a otros objetos sobre cambios en su estado.

Para entender este patrón de diseño analizaremos el siguiente problema:

Imaginemos que tenemos un objeto Blog en el que escribimos sobre temas de Tecnología, Matemáticas y Programación, y un objeto Suscriptor que está interesado en uno o más temas del Blog.

El suscriptor puede visitar el blog cada un tiempo para comprobar que se halla escrito un artículo de su interés. Pero, mientras no hallan nuevos artículos con el tema de interés para el suscriptor, la mayoría de las visitas del suscriptor al blog serán innecesarias.

El blog podría enviar cientos de notificaciones a los suscriptores cada vez que haya una nueva publicación, ayudando al suscriptor ano tener que entrar al blog para comprobar si hay un nuevo artículo, pero molestaría a los suscriptores que no le interesan todos los temas .

El resultado es un conflicto en el que, o el suscriptor tiene que entrar constantemente al blog, o el blog realiza un uso innecesario de recursos para notificar a los clientes que no desean recibir notificaciones de algunos temas.

Solución utilizando el patrón de diseño Observer:

1. Creamos las interfaces

2. Creamos el objeto Blog

3. Creamos objeto suscriptor

Ahora probemos el código anterior:

La Salida:

John: New article for you, theme Technology
Mary: New article for you, theme Programming

A partír de este momento, cada suscriptor será notificado solamnte cuando se publique un tema de su interés en el blog.

Código completo: https://github.com/Ventura94/DesignPatterns/blob/master/observer_article.py

--

--