Patrón Observer

Lectura de ~3 minutos

Define una dependencia uno-muchos entre objetos, de modo que cuando un objeto cambia, todas sus dependencias se actualizan automáticamente.

Aplicabilidad

  • Cuando una abstracción tiene dos aspectos, una depende de otra. Al encapsular esos aspectos en objetos separados permite resuarlos de manera independiente.

  • Cuando un cambio en un objeto requiere cambiar otros, y no se sabe cuantos objetos se necesitan cambiar.

  • Cuando un objetos debe notificar a otros, sin saber que objetos son esos otros.

Estructura

Observer Diagram

Se define una clase abstracta que permite añadir o quitar objetos dependientes y realiza notificaciones a cada objeto dependiente. Las clases hijas contienen el estado que se debe notificar. A su vez se define una interfa que permite a todos sus hijos actualizarse cuando lo haga su dependencia.

Consecuencias

  • Permite modificar los observadores y los objetos observados independientemente.

  • Hay acoplamiento en la abstracción de la case observadora y observada. Las clases observadas saben que objetos de tipo observador están activos.

  • Soporta la comunicación de tipo broadcast.

  • Puede provocar actualizaciones inesperadas si no se mantiene el listaod de observadores.

Aquí un pequeño ejemplo de este patrón en net core.

Nos vemos en las próximas líneas.

Escrito el 12/12/2018