opinion IMHO complète à part Dependency Injection
avec tout le jargon est mieux adapté aux langues statiquement typé comme Java, en python, vous pouvez accomplir très facilement par exemple ici est un os à nu 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()
sortie:
Cool task 0
Cool task 1
Cool task 2
Cool task 3
Cool task 4
Si vous pensez que quelque chose manque, nous pouvons facilement l'ajouter, son python.
Il ne s'agit pas d'une injection de dépendance mais d'un localisateur de service. – deamon
@deamon Peut-être que ce n'est aucun, peut-être c'est à la fois 'get_feature ('logger')' est localisateur de service mais set_feature injecte MyLogger au début de l'application, c'est un bon lien entre les différences http://martinfowler.com/ articles/injection.html # ServiceLocatorVsDependencyInjection –
Malheureusement, il s'agit d'un localisateur de service. Et [Service Locator est un anti-modèle] (http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern) –