Foto de en Ben White Unsplash Una vez me preguntaron en una entrevista, Inmediatamente pensé que Pub-Sub significa y luego recordé vívidamente del libro "Head first Design Pattern": "¿cuál es la diferencia entre el patrón Observer y el patrón Pub-Sub?" 'Editor-Suscriptor' Editores + Suscriptores = Patrón observador - Pensé. “Lo tengo, lo tengo. No me puede engañar Sr.” Estoy agregando este GIF irrelevante, como todos lo hacen Respondí con una sonrisa ganadora: . “Son iguales” Pero el entrevistador me devolvió la sonrisa como si me entendiera y dijo: Y me quede como- "No, no lo son". Sí, lo he vuelto a hacer. ¿Así que ... qué me perdí? ¿Cómo salió mal? Después de regresar a casa, decidí buscar la respuesta en Google. Esta publicación trata sobre el extracto que aprendí de esa consulta. Antes de profundizar en la diferencia, primero hablemos un poco sobre el patrón 'Observer' y 'Pub-Sub'. Patrón de diseño del observador: Creo que mucha gente estará de acuerdo conmigo en que el patrón de diseño 'Observador' es uno de los patrones de diseño más fáciles de todos. Quiero decir, a diferencia de la mayoría de los otros patrones de diseño, al menos puedes 'Sentir' cuál es el concepto principal del patrón de diseño Observer en la primera lectura. El es un patrón de diseño de software en el que un objeto, llamado , mantiene una lista de sus dependientes, llamados , y les notifica automáticamente cualquier cambio de estado, generalmente llamando a uno de sus métodos. patrón de observador sujeto observadores Mira, incluso la no es tan difícil, ¿verdad? Si todavía está luchando, expliquemos en términos sencillos. definición de Wikipedia Supongamos que está buscando trabajo como ingeniero de software y está muy interesado en una empresa llamada 'Banana Inc.'. Entonces, se comunicó con su gerente de contratación y le dio su número de contacto. Te aseguró que si hay alguna vacante te avisarán. Y también hay otros candidatos interesados, como tú. Informarán a todos los candidatos sobre la vacante y tal vez si responde, realizarán una entrevista. Entonces, ¿cómo se relaciona este escenario con el patrón de diseño 'Observer'? Aquí, la empresa 'Banana Inc.' es el que mantiene una lista de todos los (candidatos como usted) y los observadores para un determinado 'vacante'. ¿No es fácil, amigo? Sujeto Observadores notificará a evento Patrón de diseño del observador (A vista de pájaro :P) Por lo tanto, si alguna vez necesita implementar este escenario en algún software o aplicación, puede seguir este proceso y puede decir que ha implementado el 'Patrón de diseño del observador'. (No estoy inflando mi artículo al mostrar ningún ejemplo de código, porque hay toneladas de ejemplos disponibles en Internet) Patrón de diseño Pub-Sub (Editor-Suscriptor): Sí, el en el Patrón del Observador es como un y el puede estar totalmente relacionado con un y Sí, el Sujeto notifica a los Observadores como un Publicador generalmente notifica a sus suscriptores. Es por eso que la mayoría de los libros o artículos de Design Pattern usan la noción de 'Editor-Suscriptor' para explicar Observer Design Pattern. Pero hay otro Patrón popular llamado y es conceptualmente muy similar al patrón del Observador. La principal diferencia entre el patrón (real) y el patrón es esta: Sujeto Publicador Observador Suscriptor 'Editor-Suscriptor' 'Editor-Suscriptor' 'Observador' ¡Ups! lo siento, ese no. Éste: En el patrón 'Editor-Suscriptor', los remitentes de mensajes, llamados , no programan los mensajes para que se envíen directamente a receptores específicos, llamados editores suscriptores. Esto significa que el editor y el suscriptor no conocen la existencia del otro. Hay un tercer componente, llamado , que es conocido tanto por el editor como por el suscriptor, que filtra todos los mensajes entrantes y los distribuye en consecuencia. En otras palabras, pub-sub es un patrón utilizado para comunicar mensajes entre diferentes componentes del sistema sin que estos componentes sepan nada sobre la identidad de los demás. ¿Cómo filtra el corredor todos los mensajes? En realidad, existen varios procesos para el filtrado de mensajes. Los métodos más populares son: . Bueno, no voy a ir más lejos en ese camino, si te interesa, . intermediario o intermediario de mensajes o bus de eventos basado en temas y basado en contenido Wikipedia lo explicó bien Patrón Pub-Sub (crédito de la imagen: ) blog de MSDN Entonces, en pocas palabras, la principal diferencia entre estos dos patrones se puede mostrar así: Fuente de la imagen: club de desarrolladores ¿Tiene sentido? Hagamos una lista de las diferencias como un resumen rápido: En el patrón del , los observadores O** **. Mientras que, en , los editores y los suscriptores . Simplemente se comunican con la ayuda de colas de mensajes o intermediarios. Observador son conscientes del Sujeto, también el Sujeto mantiene un registro de los Observadores Publisher/Subscriber no necesitan conocerse entre sí En el patrón de , los componentes están débilmente acoplados a diferencia del patrón de . publicador/suscriptor observador El patrón del se implementa principalmente de forma , es decir, el Sujeto llama al método apropiado de todos sus observadores cuando ocurre algún evento. El patrón se implementa principalmente de forma (utilizando la cola de mensajes). observador síncrona Publicador/Suscriptor asíncrona El patrón de debe implementarse en un único espacio de direcciones de aplicación. Por otro lado, el patrón de es más un patrón de aplicación cruzada. observador publicador/suscriptor A pesar de las diferencias entre estos patrones, algunos podrían decir que el patrón es una variación del patrón debido a la similitud conceptual entre ellos. Y no se equivocará en absoluto. No es necesario tomar las diferencias religiosamente. Son parecidos, ¿no? Publisher-Subscriber Observer Bueno, eso es todo por ahora. Espero que entiendas la idea. Gracias por leer el articulo. Por favor, hágamelo saber si hay algún error o alguna modificación necesaria. Gracias por adelantado.