tipos software patrones estructurales ejemplos diseño creacionales creacion comportamiento design-patterns oop callback

design-patterns - software - patrones estructurales



¿Hay un patrón de diseño que se ocupa del mecanismo de devolución de llamada? (9)

¿Hay un patrón de diseño que se ocupa del mecanismo de devolución de llamada?


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 pretendía permitir que se registren una o más devoluciones de llamada y se pueden llamar como notificación "en algún momento en el futuro", está hablando Observer. Además, la invocación real de la devolución de llamada en este caso suele ser "opcional" o activada en función de algún estímulo. (Las devoluciones de llamada pueden o no ser llamadas)

Si pretendes pasar "algo que hacer", y eso se hace en el método (o se usa para "hacer algo" durante un proceso posterior) estás hablando de estrategia. Además, la invocación real suele suceder.

Tenga en cuenta que el mismo código podría ser cualquiera de los dos: se trata realmente de cómo está pensando en el problema y cómo quiere que otros lo piensen.



Ese sería el patrón del observador - De Wikipedia

El patrón de observador (un subconjunto del patrón de publicación / suscripción asíncrono) es un patrón de diseño de software en el que un objeto, llamado sujeto, mantiene una lista de sus dependientes, llamados observadores, y les notifica automáticamente cualquier cambio de estado, generalmente llamando Uno de sus métodos. Se utiliza principalmente para implementar sistemas de manejo de eventos distribuidos.


Su pregunta es muy general, y la respuesta más general que se me ocurre es usar el polimorfismo cuando tiene un problema que requiere 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 utilizará su 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 recomendable utilizar el estado, la estrategia, el patrón de observador o algo completamente diferente, realmente depende de las circunstancias.


También estoy de acuerdo con los otros carteles sobre el patrón Observer. Está diseñado específicamente para este propósito.


Una buena descripción de patrón es el patrón de diseño de devolución de llamada de servicio . Es parte de un catálogo de patrones SOA, pero el patrón descrito puede emplearse con componentes genéricos que no son servicios SOA.

Otro patrón relacionado es el patrón de dirección de retorno descrito en el libro clásico "Patrones de integración empresarial" de Hohpe y Woolf.

Josuttis también habla sobre la devolución de llamada en su libro "SOA en la práctica". Él lo llama el patrón de intercambio de mensajes de solicitud / devolución de llamada .



Polimorfismo externo : un objeto tiene una referencia a otro objeto y una función para llamar a ese objeto. Puede verse como un solo tipo, por lo que puede mezclar y combinar objetos y funciones para llamar al evento. Los delegados son un ejemplo de este patrón. Esto es más de un enfoque de estilo C #.

Patrón de observador : utiliza una interfaz / clase base que un objeto puede implementar y registra esta interfaz en un evento. Más de un enfoque de estilo Java.

Verifique la respuesta que publiqué aquí para una solución en C ++ para delegados / polimorfismo externo: puntero de función en bruto desde un método enlazado


La devolución de llamada es un patrón de diseño de estrategia de formulario