SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
BEHAVIOURAL PATTERNS 
THE OBSERVER PATTERN 
César López
MOTIVACIÓN 
Separar los cambios en un "sujeto" de la acción "objeto" provocada.
OTRAS FORMAS DE DECIR LO MISMO 
Objeto -> Sujeto 
Observador -> Observado 
EventHandler -> Event 
EventListener -> Event
¿CÓMO FUNCIONA? 
El sujeto observado: 
Añade observadores 
Elimina observadores 
Notifica a los observadores 
(Opcionalmente) Informar del estado actual 
El observador: 
Realiza la acción al ser notificado 
(Opcionalmente) Pregunta por el estado actual
BENEFICIOS 
Separar clases que interactúan entre sí favoreciendo el 
desacoplamiento. 
Posibilidad de añadir nuevos observadores sin modificar el código 
del observado. 
Observar distintos objetos con el mismo observador.
TIPOS DE SUJETOS OBSERVABLES 
Aquellos que cambian entre estados definidos. 
Aquellos que sufren cambios sin tener estados.
POR EJEMPLO (I) 
Sujetos con estado: 
Observar la conexión de datos de una aplicación móvil. 
Al cambiar a offline: 
Pintamos un aviso al cliente 
Guardamos el estado actual 
Encolamos las peticiones al servidor 
Al cambiar a online: 
Borramos el aviso al cliente 
Recuperamos el estado anterior 
Gestionamos las peticiones encoladas
FORMAS DE NOTIFICAR/OBSERVAR 
.notify("networkStatusChange") -> .getCurrentNetworkStatus() 
.notify("networkOnline") 
.notify("networkOffline")
POSIBLES PROBLEMAS 
Al añadir un observador puede quedarse en un estado incorrecto. 
Para ello habría que preguntar por el estado al observado y 
ejecutar el código del observador si aplica.
POR EJEMPLO (II) 
Sujetos sin estado: 
Añadir o eliminar un elemento de una colección. 
Tenemos una vista que lista los elementos de la colección. Nos 
podría interesar observar cada vez que añadimos un elemento 
para refrescar la vista añadiendo una nueva fila. 
Y lo mismo para eliminar una fila.
FORMAS DE NOTIFICAR/OBSERVAR 
.notify("elementAdded", element) 
.notify("elementAdded") -> .getLastElementAdded() 
.notify("elementRemoved", element) 
.notify("elementRemoved") -> getLastElementRemoved()
RESUMEN 
Varios observadores observan a un sujeto. 
Las notificaciones de este sujeto pueden estar relacionadas con 
cambios de estado, o no. 
Hay dos formas de notificar, pull o push.
¿Preguntas?
¡Gracias!
BONUS TRACK 
Si os ha gustado, siempre podéis mirar el patrón 
Publish/Subscribe 
Pubsub para los amigos ;)

Más contenido relacionado

Destacado

Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón DecoratorAutentia
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoAutentia
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón FaçadeAutentia
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgAutentia
 
Nativescript
NativescriptNativescript
NativescriptAutentia
 
Factory method
Factory methodFactory method
Factory methodAutentia
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creaciónAutentia
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoAutentia
 

Destacado (12)

Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón Decorator
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de Diseño
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón Façade
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezg
 
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Nativescript
NativescriptNativescript
Nativescript
 
Decorator
DecoratorDecorator
Decorator
 
Factory method
Factory methodFactory method
Factory method
 
Singleton
SingletonSingleton
Singleton
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: Polimorfismo
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 

Similar a Observer Pattern Explained in Under 40 Characters

Capítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesosCapítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesosSergio Valenzuela Mayer
 
Agregar Interactividad Y La Funcion Undo
Agregar Interactividad Y La Funcion UndoAgregar Interactividad Y La Funcion Undo
Agregar Interactividad Y La Funcion UndoUVM
 
Bases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia AmbientalBases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia Ambientalandermijan
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en accessssuser3a82fb
 
Sistemas de Informacion - Tema 3 diagrama de actividades
Sistemas de Informacion - Tema 3   diagrama de actividadesSistemas de Informacion - Tema 3   diagrama de actividades
Sistemas de Informacion - Tema 3 diagrama de actividadesrulazisc
 

Similar a Observer Pattern Explained in Under 40 Characters (12)

Observer design pattern
Observer design patternObserver design pattern
Observer design pattern
 
Observer design pattern
Observer design patternObserver design pattern
Observer design pattern
 
Observer
ObserverObserver
Observer
 
Capítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesosCapítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesos
 
Agregar Interactividad Y La Funcion Undo
Agregar Interactividad Y La Funcion UndoAgregar Interactividad Y La Funcion Undo
Agregar Interactividad Y La Funcion Undo
 
Bases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia AmbientalBases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia Ambiental
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Diagramas de comportamientos
Diagramas de comportamientosDiagramas de comportamientos
Diagramas de comportamientos
 
Sistemas de Informacion - Tema 3 diagrama de actividades
Sistemas de Informacion - Tema 3   diagrama de actividadesSistemas de Informacion - Tema 3   diagrama de actividades
Sistemas de Informacion - Tema 3 diagrama de actividades
 
Vistas
VistasVistas
Vistas
 
Labo 2
Labo 2Labo 2
Labo 2
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 

Último (16)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 

Observer Pattern Explained in Under 40 Characters

  • 1. BEHAVIOURAL PATTERNS THE OBSERVER PATTERN César López
  • 2. MOTIVACIÓN Separar los cambios en un "sujeto" de la acción "objeto" provocada.
  • 3. OTRAS FORMAS DE DECIR LO MISMO Objeto -> Sujeto Observador -> Observado EventHandler -> Event EventListener -> Event
  • 4. ¿CÓMO FUNCIONA? El sujeto observado: Añade observadores Elimina observadores Notifica a los observadores (Opcionalmente) Informar del estado actual El observador: Realiza la acción al ser notificado (Opcionalmente) Pregunta por el estado actual
  • 5. BENEFICIOS Separar clases que interactúan entre sí favoreciendo el desacoplamiento. Posibilidad de añadir nuevos observadores sin modificar el código del observado. Observar distintos objetos con el mismo observador.
  • 6. TIPOS DE SUJETOS OBSERVABLES Aquellos que cambian entre estados definidos. Aquellos que sufren cambios sin tener estados.
  • 7. POR EJEMPLO (I) Sujetos con estado: Observar la conexión de datos de una aplicación móvil. Al cambiar a offline: Pintamos un aviso al cliente Guardamos el estado actual Encolamos las peticiones al servidor Al cambiar a online: Borramos el aviso al cliente Recuperamos el estado anterior Gestionamos las peticiones encoladas
  • 8.
  • 9. FORMAS DE NOTIFICAR/OBSERVAR .notify("networkStatusChange") -> .getCurrentNetworkStatus() .notify("networkOnline") .notify("networkOffline")
  • 10. POSIBLES PROBLEMAS Al añadir un observador puede quedarse en un estado incorrecto. Para ello habría que preguntar por el estado al observado y ejecutar el código del observador si aplica.
  • 11. POR EJEMPLO (II) Sujetos sin estado: Añadir o eliminar un elemento de una colección. Tenemos una vista que lista los elementos de la colección. Nos podría interesar observar cada vez que añadimos un elemento para refrescar la vista añadiendo una nueva fila. Y lo mismo para eliminar una fila.
  • 12. FORMAS DE NOTIFICAR/OBSERVAR .notify("elementAdded", element) .notify("elementAdded") -> .getLastElementAdded() .notify("elementRemoved", element) .notify("elementRemoved") -> getLastElementRemoved()
  • 13. RESUMEN Varios observadores observan a un sujeto. Las notificaciones de este sujeto pueden estar relacionadas con cambios de estado, o no. Hay dos formas de notificar, pull o push.
  • 16. BONUS TRACK Si os ha gustado, siempre podéis mirar el patrón Publish/Subscribe Pubsub para los amigos ;)