Supongamos que tengo una clase Monkey que a veces necesita adquirir una instancia de Banana. La forma en que se proporciona este plátano no es de interés para el mono, pero sí inicia la adquisición del plátano.Evento, delegado o interfaz?
Ahora tengo al menos tres formas posibles de conectar mi mono a un proveedor de banano. ¿Cuál es la mejor manera de hacerlo?
1. Evento
criar a un evento Monkey.BananaNeeded
. El controlador de eventos establece la propiedad BananaNeededEventArgs.Banana
.
2. Interfaz
invocación IBananaProvider.GetBanana
. La instancia IBananaProvider
se inyecta en el mono como un argumento constructor o a través de una propiedad.
3. Delegado
invocar un delegado de tipo System.Func<Banana>
. El delegado se inyecta en el mono como un argumento constructor o a través de una propiedad. Este es tentador porque no requiere la declaración de interfaces o clases adicionales, pero aparentemente no es una opción popular.
+1 por divertidos ejemplos y una pregunta decente, pero por supuesto al mono no le importa si adquiere un plátano, lo único que le importa es comer un sabroso manjar. –
Mono gordo: while (true) _provider.GetBanana.Eat(); – Guffa
No olvide desechar las pieles de plátano. No queremos una fuga de piel de plátano en nuestras manos. –