¿Cuál es la diferencia entre los observadores y las devoluciones de llamada? ¿Cuándo y dónde usar cuál?¿Cuál es la diferencia entre los observadores y las devoluciones de llamada?
Respuesta
Se trata de la separación de las preocupaciones.
Los observadores le permiten factorizar el código que realmente no pertenece a los modelos. Por ejemplo, un modelo User
podría tener una devolución de llamada que envíe un correo electrónico de confirmación de registro después de guardar el registro del usuario, pero realmente no desea este código en el modelo porque no está directamente relacionado con el propósito del modelo.
Los observadores le permiten tener esa separación limpia porque no tiene todo ese código de devolución de llamada en sus modelos. Los observadores dependen de un modelo (o modelos), y no al revés.
Para mí es lo mismo. Pero prefiero la devolución de llamada en lugar de Observer.
Observer son de devolución de llamada, pero en un modelo separado.
La devolución de llamada se encuentra dentro del modelo. Entonces ves que hay devolución de llamada y puedes hackearla.
Creo que es mucho sobre mantener sus modelos razonablemente delgados. Entonces, cuando encuentre que su modelo es ridículamente largo, podría ser hora de refactorizarlo para usar un observador.
Desde el estricto POW arquitectónico (como se señala en la respuesta de John) se trata de separation of responsibilities, pero si es algo simple, prefiero pegarlo en el modelo de todos modos.
Técnicamente, prácticamente no hay diferencia.
- 1. ¿Cuál es la diferencia de rendimiento entre bloques y devoluciones de llamada?
- 2. Diferencia entre controladores de eventos y devoluciones de llamada
- 3. Cierre y devoluciones de llamada
- 4. Diferencia entre las devoluciones de llamada de los clientes y los métodos de página de Ajax - ASP.NET
- 5. ¿Cuál es la diferencia entre dict() y {}?
- 6. Observadores vs. Devolución de llamada
- 7. ¿Cómo se pueden manejar los observadores y las devoluciones de llamada de Rails de forma asíncrona (en un hilo diferente)?
- 8. Cuál es la diferencia entre $ (...) y `...`
- 9. ¿Cuál es la diferencia entre los paquetes android.opengl y javax.microedition.khronos.opengles?
- 10. ¿Cuál es la diferencia entre .ToString (+) y ""
- 11. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 12. ¿Cuál es la diferencia entre los atributos "wairole" y "role"?
- 13. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 14. ¿Cuál es la diferencia entre todos los proyectos y subproyectos
- 15. ¿Cuál es la diferencia entre ".equals" y "=="?
- 16. ¿Cuál es la diferencia entre los archivos apklib y jar?
- 17. Saltarse las devoluciones de llamada y validación
- 18. ¿cuál es la diferencia entre las tareas AntCall y Ant?
- 19. cuál es la diferencia entre las plantillas y el polimorfismo
- 20. Cuál es la diferencia entre las funciones VarIsEmpty y VarIsEmptyParam
- 21. Cuál es la diferencia entre = y: =
- 22. ¿Cuál es la diferencia entre los certificados rapidSSL y geotrust?
- 23. ¿Cuál es la diferencia entre los archivos .class y .dex?
- 24. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 25. ¿Cuál es la diferencia entre los archivos .so y .a?
- 26. ¿Cuál es la diferencia entre los eventos Control.Enter y Control.GotFocus?
- 27. ¿Cuál es la diferencia entre los archivos .lib y .a?
- 28. ¿cuál es la diferencia entre:.! y: r !?
- 29. ¿Cuál es la diferencia entre los algoritmos genéticos y evolutivos?
- 30. ¿Cuál es la diferencia entre los datos-dojotype y dojoType?