¿Hay un patrón de diseño que se ocupe del mecanismo de devolución de llamada?¿Hay un patrón de diseño que se ocupe del mecanismo de devolución de llamada?
Respuesta
Ese sería el Observer Pattern - De Wikipedia
El patrón de observador (un subconjunto de la asíncrono de publicación/suscripción patrón) es un patrón de diseño de software en el que un objeto, denominado objeto , mantiene una lista de sus dependientes , llamados observadores, y los notifica automáticamente de cualquier cambio de estado , generalmente llamando a de sus métodos. Se utiliza principalmente para implementar implementación distribuida de eventos de sistemas .
de devolución de llamada es una forma estrategia patrón de diseño
Estoy de acuerdo en que la estrategia es una mejor analogía que Observer. Para mí, una devolución de llamada sería un puntero de función o un cierre. Como esos constructos no están disponibles en todos los idiomas, una estrategia es la aproximación al armario. Dependiendo de su perspectiva, tiene la (mala) fortuna de tener que crear las diversas interfaces requeridas por su patrón de diseño de elección. – Patrick
Varios. Salida http://people.bu.edu/azs/teaching/cs108/2006fall/callback_pattern.pdf, y los siguientes: Patrón
Visitante: Patrón http://en.wikipedia.org/wiki/Visitor_pattern
Observador: http://en.wikipedia.org/wiki/Observer_pattern
patrón de estrategia: http://en.wikipedia.org/wiki/Strategy_pattern
El más adecuado dependerá de la situación. ¿Qué lenguaje de programación quieres usar y qué quieres hacer exactamente?
El patrón Observer viene a la mente.
Un objeto (suscriptor) puede suscribirse a otro objeto (editor). Cuando el editor cambia o se actualiza, puede notificar a todos sus suscriptores.
Dependiendo del idioma que esté utilizando, puede especificar una función que debe invocarse para notificar.
http://en.wikipedia.org/wiki/Observer_pattern
Es bien descrito en Design Patterns: Elements of Reusable Object-Oriented Software [Gang of Four]
External polymorphism - Un objeto tiene una referencia a un otro objeto y una función para llamar a ese objeto. Se puede ver como un solo tipo, por lo tanto, puede mezclar y combinar objetos y funciones para llamar al evento. Los delegados son un ejemplo de este patrón. Esto es más un enfoque de estilo C#.
Observer pattern - Utiliza una clase de interfaz/base que un objeto puede implementar y registrar esta interfaz en un evento. Más de un enfoque de estilo Java.
Comprobar la respuesta que he publicado aquí por una solución de C++ para los delegados/polimorfismo externa: raw function pointer from a bound method
Depende de cómo se utiliza la devolución de llamada.
Los patrones de diseño tienen que ver con comunicar su intención.
Si tenía la intención de permitir el registro de una o más devoluciones de llamada y llamarlas como notificaciones "en algún momento en el futuro", está hablando de Observer. Además, la invocación real de la devolución de llamada en este caso suele ser "opcional" o se desencadena en función de algún estímulo. (Las devoluciones de llamada pueden o no pueden ser llamadas)
Si pretendía pasar "algo que hacer", y eso se hace en el método (o se usa para "hacer algo" durante un proceso posterior) ' Hablando de estrategia. Además, la invocación real generalmente ocurre.
Tenga en cuenta que el mismo código podría ser cualquiera, se trata realmente de cómo está pensando en el problema y cómo quiere que otros lo piensen.
Me gusta esta respuesta más –
Su pregunta es muy general, y la respuesta más general que puedo pensar es usar polimorfismo cuando tenga un problema que requiera una devolución de llamada.
El polimorfismo le permite especificar un contrato de software en forma de una interfaz (o una clase abstracta) sobre cómo se usará la devolución de llamada. Entonces los clientes son libres de elegir cualquier implementación de la interfaz que consideren adecuada para su propósito.
Si es aconsejable utilizar el estado, la estrategia, el patrón del observador o algo completamente diferente realmente depende de las circunstancias.
Estoy de acuerdo con los otros pósters sobre el patrón Observer también. Está específicamente diseñado para este propósito.
Una buena descripción de patrón es Service Callback design pattern. Es parte de un catálogo de patrones SOA, pero el patrón como se describe se puede emplear con componentes genéricos que no son servicios SOA.
Otro patrón relacionado es el Return Address pattern descrito en el libro clásico "Enterprise Integration Patterns" por Hohpe y Woolf.
Josuttis también habla de devolución de llamada en su libro "SOA in Practice". Él lo llama el Request/Callback message exchange pattern.
- 1. nodejs patrón de diseño de devolución de llamada paralelo
- 2. ¿Patrón de observador o devolución de llamada?
- 3. ¿Cómo implementar el mecanismo de devolución de llamada en Rserve?
- 4. ¿Hay un patrón de diseño para esto?
- 5. Patrón de diseño de devolución de llamada doble o múltiple con JavaScript/jQuery
- 6. Android: ¿hay una devolución de llamada que se invoca justo después de onResume()?
- 7. Frustraciones del patrón de diseño
- 8. ¿Hay una devolución de llamada para History.pushstate?
- 9. ¿Mixin se considera un patrón de diseño?
- 10. desventajas del patrón de diseño del generador
- 11. ¿Hay un patrón de diseño estándar para ExtJS
- 12. Recomiende un patrón de diseño
- 13. ¿Hay algún "patrón de diseño" en C?
- 14. ¿Hay algún patrón de diseño para crear un asistente?
- 15. ¿Existe un patrón de diseño de administrador?
- 16. función de devolución de llamada que significa
- 17. control del repetidor que causa devolución de datos inválida o argumento de devolución de llamada
- 18. Unidad de trabajo de diseño del patrón
- 19. Devolución de llamada asincrónica
- 20. F # patrón de diseño
- 21. Mongoose.js instance.save() devolución de llamada que no se activa
- 22. devolución de llamada en C#, orden de llamada y devolución
- 23. ¿Es este un patrón de diseño común? "Patrón de descriptor"?
- 24. ¿Hay alguna biblioteca Haskell estándar que se ocupe de la comunicación de procesos?
- 25. ¿Patrón de diseño para validar la entrada?
- 26. Contrato de devolución de llamada de larga duración a través del canal dúplex WCF: ¿patrones de diseño alternativos?
- 27. Mecanismo del portapapeles de xwindow
- 28. Patrón de diseño del observador en C++
- 29. Diseño de patrón "Fachada"
- 30. Llamada de Android de nuevo después de que la representación del diseño se haya completado?
El patrón Observer es similar al patrón de publicación y suscripción, no a la devolución de llamada. Por una vez, los módulos Observer no son "devueltos" después de llamar al módulo Observable. El Observable llama a los observadores para notificarles de los cambios de estado. –