¿Cómo funciona el Patrón Observer?

34/42

Lectura

¡Un saludo, Platzinauta!👋🏻

¡Ups! De momento, esta clase no está disponible en nuestra plataforma, pero sí la tenemos en YouTube.

Para no interrumpir tu aprendizaje te dejamos el video y link para que puedas verla en YouTube.

Link a YouTube

Pronto estará disponible en Platzi como el resto de clases.

Gracias por tu comprensión y nunca pares de aprender💚

Aportes 44

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Observer (patrón de diseño)

Observador (en inglés: Observer) es un patrón de diseño de software que define una dependencia del tipo uno a muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, notifica este cambio a todos los dependientes. Se trata de un patrón de comportamiento (existen de tres tipos: creación, estructurales y de comportamiento), por lo que está relacionado con algoritmos de funcionamiento y asignación de responsabilidades a clases y objetos.

Los patrones de comportamiento describen no solamente estructuras de relación entre objetos o clases sino también esquemas de comunicación entre ellos y se pueden clasificar en función de que trabajen con clases (método plantilla) u objetos (cadena de responsabilidad, comando, iterador, recuerdo, observador, estado, estrategia, visitante).

La variación de la encapsulación es la base de muchos patrones de comportamiento, por lo que cuando un aspecto de un programa cambia frecuentemente, estos patrones definen un objeto que encapsula dicho aspecto. Los patrones definen una clase abstracta que describe la encapsulación del objeto.

Este patrón también se conoce como el patrón de publicación-inscripción o modelo-patrón. Estos nombres sugieren las ideas básicas del patrón, que son: el objeto de datos, que se le puede llamar Sujeto a partir de ahora, contiene atributos mediante los cuales cualquier objeto observador o vista se puede suscribir a él pasándole una referencia a sí mismo. El Sujeto mantiene así una lista de las referencias a sus observadores. Los observadores a su vez están obligados a implementar unos métodos determinados mediante los cuales el Sujeto es capaz de notificar a sus observadores suscritos los cambios que sufre para que todos ellos tengan la oportunidad de refrescar el contenido representado. De manera que cuando se produce un cambio en el Sujeto, ejecutado, por ejemplo, por alguno de los observadores, el objeto de datos puede recorrer la lista de observadores avisando a cada uno. Este patrón suele utilizarse en los entornos de trabajo de interfaces gráficas orientados a objetos, en los que la forma de capturar los eventos es suscribir listeners a los objetos que pueden disparar eventos.

El patrón observador es la clave del patrón de arquitectura Modelo Vista Controlador (MVC).1​ De hecho el patrón fue implementado por primera vez en el MVC de Smalltalk basado en un entorno de trabajo de interfaz.2​ Este patrón está implementado en numerosos bibliotecas y sistemas, incluyendo todos los toolkits de GUI.

Patrones relacionados: publicador-subscriptor, mediador, singleton.

Objetivo

Definir una dependencia uno a muchos entre objetos, de tal forma que cuando el objeto cambie de estado, todos sus objetos dependientes sean notificados automáticamente. Se trata de desacoplar la clase de los objetos clientes del objeto, aumentando la modularidad del lenguaje, creando las mínimas dependencias y evitando bucles de actualización (espera activa o sondeo). En definitiva, normalmente, se usará el patrón observador cuando un elemento quiere estar pendiente de otro, sin tener que estar comprobando de forma continua si ha cambiado o no.

Motivación

Si se necesita consistencia entre clases relacionadas, pero con independencia, es decir, con un bajo acoplamiento.

Estructura

Participantes

Habrá sujetos concretos cuyos cambios pueden resultar interesantes a otros y observadores a los que al menos les interesa estar pendientes de un elemento y en un momento dado, reaccionar ante sus notificaciones de cambio. Todos los sujetos tienen en común que un conjunto de objetos quieren estar pendientes de ellos. Cualquier elemento que quiera ser observado tiene que permitir indicar:

  1. “Estoy interesado en tus cambios”.
  2. “Ya no estoy interesado en tus cambios”.

El observable tiene que tener, además, un mecanismo de aviso a los interesados.

A continuación se detallan a los participantes de forma desglosada:

  • Sujeto (subject):

El sujeto proporciona una interfaz para agregar (attach) y eliminar (detach) observadores. El Sujeto conoce a todos sus observadores.

  • Observador (observer):

Define el método que usa el sujeto para notificar cambios en su estado (update/notify).

  • Sujeto concreto (concrete subject):

Mantiene el estado de interés para los observadores concretos y los notifica cuando cambia su estado. No tienen porque ser elementos de la misma jerarquía.

  • Observador concreto (concrete observer):

Mantiene una referencia al sujeto concreto e implementa la interfaz de actualización, es decir, guardan la referencia del objeto que observan, así en caso de ser notificados de algún cambio, pueden preguntar sobre este cambio.

El profe pelon 😄

Muy gracioso el efecto que crea el fondo con el pelo de Richard, menos mal no salio con la camiseta negra… jajajaja…

no deberian de poner lo videos en Youtube , por ejemplo donde trabajo esta bloqueado Youtube pero no platzi y ahora no puedo ver este video

En definitiva, normalmente, se usará el patrón observador cuando un elemento quiere estar pendiente de otro, sin tener que estar comprobando de forma continua si ha cambiado o no.

Ay el profe se ve más contento en la clase publica XD

Se dan cuenta que los videos de youtube los profesores siempre hablan en un tono distinto.

De comportamiento: Nos ayuda a resolver problemas relacionados con el comportamiento de la aplicación. Ofrece soluciones respecto a la interacción y responsabilidad entre objetos y clases. Por ejemplo:

  • Observer (Observador) La definición que provee Wikipedia es bastante entendible y real, dice “Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.”

No sé que estaban pensando las personas que decidieron era buena idea que para aplicar el CTA a suscribirse a Platzi el profesor tuviera que apuntarse el paquete.

Entonces los Listener en las paginas web, implementan el patron Observer? 😮
     
Ya quiero aprender este patron, genial

El patrón es muy bueno y sumamente interesante.
Pero, al equipo de producción les recomiendo que no usen fondos negros con gente de pelo negro 😅

Observer es un patrón de diseño de software que define una dependencia del tipo uno a muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, notifica este cambio a todos los dependientes.

¿Que es un modal ?

Para registrar lo que hacen los usuarios este patron es la solucion

El patrón Observer se usa en los newsletters

Es uno de los patrones más utilizados, algunos ejemplos típicos son:

Newsletter
Sockets
Listeners en páginas web

Genial, prácticamente es un algo que te permite estar observando por cambios, y le notifica a todos sus suscriptores cuando ese algo ha cambiado

Me recuerda mucho a SocketIo donde cada que algo cambia le notifica a todos los sockets conectados (o a los que elijas) es genial ^^

Súper genial… gracias!

Hasta ahora el curso es genial!

Mas me pareció ver un comercial que una clase, entiendo la necesidad de crear ese contenido, pero no entiendo porque mezclarlo con la lista actual, crea desorden para quienes no pueden estar abriendo youtube, rompe el ritmo

EL mejor curso que he visto hasta ahora una chulada

El patrón observer se compone de un sujeto que ofrece mecanismos de suscripción y desuscripción a múltiples observadores que quieren ser notificados de los cambios en dicho sujeto. Cada observador expone un método de update que es usado por el sujeto para notificar cualquier cambio a todos los suscritos.

Ahora entiendo un poco más a los Observables de Angular. Dejo un link que en pocas palabras y con ejemplos sencillos explica como usar Observables en angular:

https://medium.com/fuzzycloud/angular-and-observable-4bf890b2a282#:~:text=Angular uses the Observer pattern,promises%2C but with some differences.

Richard en su versión calva 😄

Esto se ve muy poderoso

good

Julio profe 😄 chascarrillo tecnologico jaja

buena

Interesante este patron de sieño.

🤓👌

Este se mira genial.

muy buen curso lo recomiendo

¿Esto tiene algo que ver con el famoso bus de eventos?

Ok interesante

En la app, no me deja ver el video 😞

Patrón muy interesante.

Estan muy buenos los videos de YT de Platzi, ojala fuesen todos asi hahahha

Patron fundamental y que no puede faltar hoy dia en el diseño de apps supongo

Normalmente se usará el patrón observer cuando un elemento quiere estar pendiente de otro, sin tener que estar comprobando de forma continua si ha cambiado o no.

😃 excelente

Buena!

rellenando el curso. xD

Genial!!

.