Pregunta

Estoy tratando de entender cuando es apropiado utilizar los eventos. Me parece que un evento puede ser pensado como un disparador de SQL. Entonces, ¿es correcto utilizar un evento desencadenado por un objeto de dominio para modificar otro, o va a implicar la falta de un diseño bien pensado si utilizamos eventos para modificar los estados de otro objeto? O debe haber una clase de mediador a través del cual estos objetos deben modificar uno al otro? ¿Cómo decidir?

¿Hay ventajas y desventajas que deben estar preocupados por aquí, como la forma de uso de eventos afectará a la capacidad de prueba?

¿Fue útil?

Solución

eventos están diseñados para desacoplar un área de otra .

A veces, esto implica un cierto comportamiento asincrónico , que puede ser una característica adicional, pero no es obligatorio. Por ejemplo, si desea proporcionar una rápida retroalimentación al usuario en una interfaz gráfica de usuario, y una parte de su código se ejecuta muy lentamente (a menos que tiene que ser terminado antes de proporcionar retroalimentación), entonces la llamada regular puede ejecutar códigos rápidos, y crear una acontecimiento para los demás, a continuación, proporcionar retroalimentación interfaz gráfica de usuario sin esperar a que el evento se procesa realmente. Este evento se almacena en una cola, y uno o más hilos procesando esa cola a su propio ritmo.

Para los eventos sincrónicos, es muy útil para la comunicación entre módulos, donde los dos módulos no tienen dependencias en tiempo de compilación en sí . Ambos pueden saber acerca de una clase de evento, y un "enrutador evento":

  • un módulo crea un evento y llamar al router,
  • el router sabe (desde la configuración anterior) lo que otro módulo debe recibirlo, y lo enviará al módulo de recepción.
  

Ni módulo de conocimientos acerca de la otra así el concepto, el desacoplamiento. Muy bueno si tanto se debe mantener por separado: -)


Existen

Muchas variaciones, para algunos temas como:

  • Difusión a muchos receptores
  • fail-over (si el receptor está temporalmente, se comienza de nuevo; será entregado el evento cuando el receptor está en marcha y de nuevo registrada)
  • auditoría : un módulo técnico puede recibir eventos dirigidos a otros módulos, y registrarlos
  • ...

Modificar los objetos de dominio a través de eventos parece un poco extraño . El desacoplamiento se mencionó más alta realmente justificado?

Sin embargo, yo no dar una opinión definitiva antes de entender con mayor precisión lo que tiene en mente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top