Admettons que l'on procède par injection de dépendance.
Par exemple avec le logger :
- je produis :
une interface ILogger avec les méthodes de log qui vont bien
une interface ILoggerUser qui a une propriété ILogger Logger{get,set}
- puis toutes mes classes implémentent ILoggerUser
C'est ça ?
L'avantage c'est que les appels ne changement pas puisque le singleton avait des méthodes statiques : Logger.Warn("alerte à malibu") reste le même.
Par contre il faut prévoir le cas où il n'y a pas d'injection et donc créer un logger par défaut qui sera affecté dès le départ à ces propriétés ; ex : un logger vers la console uniquement.
J'ai tout bon ?
Par contre pour les injections comment je fais ? Surtout quand je les fais ? Je dois passer toutes mes instances en revue et leur affecter le logger à la chaine ? Ou alors je passe par une Factory qui va me fournir le logger à la demande ? Mais je deviens dépendant d'une Factory alors... au lieu d'un Singleton... quel est le bénéfice ? Arggglll .... au seccccccours !
Partager