opinión en mi humilde opinión pleno derecho Dependency Injection
con toda la jerga se adapta mejor al tipo estático lenguajes como Java, en Python que se puede lograr muy fácilmente por ejemplo, aquí hay un hueso desnudo injection
class DefaultLogger(object):
def log(self, line):
print line
_features = {
'logger': DefaultLogger
}
def set_feature(name, feature):
_features[name] = feature
def get_feature(name):
return _features[name]()
class Whatever(object):
def dosomething(self):
feature = get_feature('logger')
for i in range(5):
feature.log("task %s"%i)
if __name__ == "__main__":
class MyLogger(object):
def log(sef, line):
print "Cool",line
set_feature('logger', MyLogger)
Whatever().dosomething()
de salida:
Cool task 0
Cool task 1
Cool task 2
Cool task 3
Cool task 4
Si cree que falta algo, podemos agregarlo fácilmente, su pitón.
Esto no es una inyección de dependencia sino un localizador de servicios. – deamon
@deamon Puede ser que no sea ninguno, puede ser ambos 'get_feature ('logger')' es el localizador de servicios pero set_feature inyecta MyLogger al inicio de la aplicación, este es un buen enlace entre las diferencias http://martinfowler.com/ articles/injection.html # ServiceLocatorVsDependencyInjection –
Desafortunadamente este es un localizador de servicio. Y [Service Locator es un antipatrón] (http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern) –