Nel post precente ho introdotto il pattern Dependency Injection, facente parte della famiglia di pattern IoC: qui discuterò, invece, del pattern Service Locator.
Proseguendo con l’esempio esposto nelle precedenti puntate il problema da risolvere è che la classe DirectoryController, presentata nei post precedenti, non rispetta il principio Dependency Inversion Principle. Infatti dipende pesantemente dalla classe utilizzata per il logging.
Abbiamo già dato una prima soluzione, ma in questa parte daremo una versione alternativa.
In questa caso invece di passare la classe da usare per il logging nel costruttore, o in un metodo o proprietà, (vedi Dependency Injection) ci si affida a uno “store centrale”, che memorizza tutte le associazioni interfaccia-istanza dell’oggetto da utilizzarsi.
Quindi usando questo store è possibile prelevare l’instanza della classe logger di interesse.
Più facile a vedersi con un esempio che a descrivere.
Continue reading