sub strategy pub pattern patrones patron observer funciona ejemplos diseƱo como design-patterns observer-pattern publish-subscribe event-dispatching

design patterns - strategy - Publisher-subscriber vs Observer



state pattern (0)

Intento dar sentido al patrón de diseño del Observador como el patrón de diseño de envío del evento principal. El patrón Observer parece ser tipo o tipo de patrón de diseño Publicar-Suscribir y me pregunto por qué hay dos patrones de diseño de aspecto similar y cómo debería elegir entre los dos.

En ambos casos, los mensajes informativos se envían entre entidades y, en ambos casos, las entidades deben registrarse o suscribirse de alguna manera para poder recibir mensajes.

Las principales diferencias entre los dos patrones de diseño parecen ser:

  • El patrón Observer parece tener un menor volumen de mensajes. Los observadores se registran con la entidad que están observando para recibir notificación de un determinado evento. El patrón Publish-Subscribe parece implicar una conversación de una sola vía, una especie de monólogo de una entidad a otra con un volumen mayor de tipos de mensajes más variados.
  • En el patrón Observer, los observadores esperan un tipo particular de notificación de evento donde Publish-Subscribe parece tener un protocolo de mensaje más abierto con un rango más amplio de posibles tipos de mensajes y contenido de mensaje (una diferencia entre un mensaje activado por un tipo específico de evento indicando que el evento sucedió frente a un protocolo de mensaje más general con un mensaje que contiene información que puede ser diferente al desencadenador de evento, como un mensaje que contiene datos de temperatura que fue activado por un temporizador periódico).
  • Observer se implementa dentro de los límites de una aplicación o dentro de un proceso único. Publish-Subscribe es un patrón de comunicación de aplicación cruzada con mensajes intercambiados entre diferentes procesos.
  • Existe una diferencia de arquitectura en que Publish-Subscribe tiene entidades editoras, intermediarias y suscripto separadas, mientras que Observer usa entidades editoras / intermediarias y suscriptoras (observadores) combinadas.

Un pensamiento que me viene a la mente es que en una aplicación de subprocesos múltiples, el patrón Publicar-Suscribir se puede usar cuando se comunican entre varios subprocesos en lugar del patrón Observer. Y quizás el patrón Observer podría usarse entre procesos, por ejemplo, un proceso se registra con otro proceso para ser notificado en caso de que ocurra un evento. Un ejemplo sería una aplicación de tablero de administración de granjas que se registra con varios contenedores de alimentos para animales para que se le notifique si el nivel de alimentación o el peso medido por el contenedor cae por debajo de algún umbral.

¿Existen otras diferencias importantes entre estos dos patrones de diseño que proporcionarían criterios para elegir uno sobre el otro?