patrones de diseño y propósito abierto

patrones de diseño y propósito abierto,

La demostración de propósito abierto adopta el patrón de diseño de productor y consumidor,

src / openpose / producer / producer.cpp: 1: #include <openpose / producer / producer.hpp>

ejemplos / tutorial_api_cpp / 16_synchronous_custom_output.cpp: 25: void workConsumer (const std :: shared_ptr <std:

 

Entonces, el modelo de productor y el modelo de consumidor, así como el modelo de suscriptor de editor, no existen en los patrones de diseño de GOF 23. De hecho, en un sentido amplio, esto está más cerca del modelo de observador en GOF 23., Puede clasificarse como modo de observador. Explique la conexión y la diferencia entre estos tres de la siguiente manera. Más tarde, analizaré cuidadosamente la lógica del código de openpose cuando tenga tiempo.

De hecho, estos dos modos son un poco similares. Ambos se generan para lograr el desacoplamiento del programa. Los observadores generalmente también se denominan modos de publicación / suscripción. Por lo general, tienen un objeto de tema, y ​​luego hay varios suscriptores para prestarle atención. Cuando su estado Cuando ocurran cambios, estos suscriptores serán notificados automáticamente; y el modelo de consumidor es similar al concepto de cola de caché, también se le llama modelo productor / consumidor, el productor solo es responsable de producir datos sin procesar (para aliviar el problema de la alta concurrencia), y los consumidores solo obtienen los datos para ser procesados ​​desde el middleware del consumidor, y realizan el trabajo de procesamiento lógico correspondiente.Los productores y los consumidores no se conocen entre sí, o pueden estar en diferentes plataformas e idiomas. ., Es decir, ¡desacoplado!

Modo consumidor en imágenes

 

El patrón del observador en la imagen.

Para el modo de observador distribuido, también hay imágenes más intuitivas.

En la práctica, también haremos de los observadores (publicar / suscribirse) un modelo pervertido de múltiples publicaciones y una suscripción. Por supuesto, el tío piensa que pueden ser de muchos a muchos .

La diferencia entre el modelo de observador y el modelo de consumidor

El suscriptor es definitivamente un consumidor, pero el consumidor no es necesariamente un suscriptor. El editor debe ser un productor, pero el productor no es necesariamente un editor.

El modo de editor de suscripción a veces se denomina modo de observador. El editor de suscripción (observando esto y lo observado) tiene una relación activa y pasiva, mientras que el consumidor productor es más neutral. El modelo de publicación de suscripción define una relación de dependencia de uno a varios, lo que permite que varios objetos de suscriptor supervisen un determinado objeto de tema al mismo tiempo. Este objeto de tema notificará a todos los objetos de suscriptor cuando cambie su estado, para que puedan actualizar automáticamente su estado. La relación productor-consumidor puede ser de uno a uno, de uno a muchos, de muchos a uno y de muchos a muchos.

En el modo de observador entre los 23 patrones de diseño, no hay un concepto de cola intermedia, pero el modelo productor-consumidor parece nacer con el concepto de una cola en un entorno de múltiples subprocesos. Después de la introducción de colas de mensajes entre editores de suscripción, se puede lograr el desacoplamiento entre suscriptores y editores, y las tareas se pueden manejar de manera asincrónica, por lo que si hay una cola intermedia no es el modo de editor de suscripción y el consumo del productor. ¡modelo!

Supongo que te gusta

Origin blog.csdn.net/u010451780/article/details/111158552
Recomendado
Clasificación