Observer

Propósito

Según el libro "Patrones de Diseño" [29] el patrón Observer "define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y se actualicen automáticamente todos los objetos que depende de él".

También conocido como

Dependents (Dependientes), Publish-subscribe (Publicar-Suscribir)

Estructura

Participantes

  • Sujeto:

    • conoce a sus observadores. Un sujeto puede ser observado por cualquier número de variables Observador.

    • proporciona una interfaz para asignar y quitar variables Observador.

  • Observador:

    • define una interfaz para actualizar las variables que deben ser notificadas ante cambios en un sujeto.

  • SujetoConcreto:

    • almacena el estado de interés para las variables ObservadorConcreto.

    • envía una notificación a sus observadores cuando cambia su estado.

  • ObservadorConcreto:

    • mantiene una referencia a una variable SujetoConcreto.

    • guarda un estado que debería ser consistente con el del sujeto.

    • implementa la interfaz de actualización del Observador para mantener su estado consistente.

Implementación

  • No se observan impedimentos y/o modificaciones de la estructura original del patrón para su implementación en Go.

  • El Sujeto y Observador se definen como interfaces por simplificación.

Código de ejemplo

En este ejemplo queremos que postulantes a empleos sean notificados cuando se creen ofertas laborales.

Implementación:

Se puede probar la implementación del patrón de la siguiente forma:

Código de ejemplo | Ejecutar código

Atención: Esta publicación se encuentra abandonada. Puede acceder a la versión vigente en https://leanpub.com/designpatternsingo

Última actualización

¿Te fue útil?