¿Cuál es realmente el caso de uso de un delegado?
Va así en mi opinión;
Se utiliza cuando el usuario desea recibir una notificación cuando se produce un “evento” específico.
- ¿Cuál es la posibilidad de que las aproximaciones de AIXI alcancen la inteligencia a nivel humano?
- ¿Cómo ha cambiado la investigación de inteligencia artificial desde 1988?
- ¿Cuáles son los alcances de carrera para estudiantes en ece apasionadamente interesados en Inteligencia Artificial?
- ¿Cómo afectará la inteligencia artificial al capitalismo?
- ¿La inteligencia artificial causaría vulnerabilidad para la próxima generación?
Esto ocurre la mayor parte del tiempo fuera del control del usuario. Los sistemas gestionados por subprocesos, los sistemas de caja cerrada deben tener una forma de abordar los “eventos”.
¿Qué hace que los delegados se adapten a este propósito? ¿Por qué simplemente no usaríamos punteros de función o interfaces como dependencias?
Es simplemente porque, la mayoría de las veces, los eventos no son dependencias, al menos no deberían serlo en la mayoría de los casos. Cuando lo estén, creo que uno debería usar otras formas que los delegados. El usuario de su sistema no sabría que necesita registrarse para un evento, porque no figura en las dependencias de su clase. Es simplemente un “podría”, no un “deber”.
Otra razón por la que uno podría usar eventos es que puede registrar múltiples manejadores. A diferencia de una dependencia, no necesitaría implementar múltiples derivaciones para implementar un patrón de “cadena de responsabilidad”. Se llamarían todos los registros, usted como usuario simplemente establecería un campo “Manejado” para satisfacer el patrón.
Volviendo al tema, ¿por qué una IA necesitaría eventos (o delegados)? Eso depende mucho de cómo describas una IA. Un sistema de decisión simple probablemente no necesitaría un sistema de gestión de eventos. Sin embargo, un sistema más complejo, como una caja de magia negra, en realidad puede necesitar manejo de eventos.
Los delegados y eventos realmente tienen usos en mi humilde opinión en estos casos;
- No son necesariamente dependencias, son poderosas
- Puede suscribirse fácilmente a múltiples manejadores
- Puede implementar fácilmente el patrón de la Cadena de responsabilidad
Para la mayoría de los otros casos, las dependencias que usan interfaces, otras clases, punteros de función harán el truco.