有人能帮我解释一下为什么python上的staticmethod对依赖注入有用吗?你知道吗
我看到了这个很棒的视频https://www.youtube.com/watch?v=E_kZDvwofHY,在45m45s上Thomas Wouters声称staticmethods对DI有用,但我不明白为什么。你知道吗
。。。你知道吗
在开始写这篇文章,做了一些测试之后,我想我明白了。 举个例子:
class GreetPrint(object):
def pp(self, param):
print("Hello", param)
class User(object):
def __init__(self, param):
self.param = param
def print_user(self):
self.output(self.param)
@staticmethod
def output(msg):
return print_dependency.pp(msg)
print_dependency = GreetPrint()
a = User("Guido")
a.print_user()
这是一种比通过构造函数注入更好的方法(至少在Python中是这样)?你知道吗
依赖注入是客户端向调用者提供调用者需要的东西的地方。你知道吗
在您的示例中,所配置的依赖项似乎是output方法,在本例中是
GreetPrint
在提供的示例中,
User
和输出方法GreetPrint
之间存在紧密耦合。想象一下,如果我们被要求改变User
的输出方式。与全局范围内浮动的打印依赖项存在紧密耦合。可以通过继承将不同的输出应用于用户,但随后会出现一个大型继承图,并生成benefits of dependency injection and composition are lost。你知道吗在这种情况下,客户机没有为
User
提供输出方法,用户只有一个输出方法GreetPrint
,客户机无法配置它。你知道吗与将outputter注入构造函数相比,现在设置它的方式看起来要困难得多。你知道吗
依赖注入可以通过编程到一个接口来建立,该接口消除了目标对其依赖的耦合。我觉得这种情况下的依赖性是output方法。你知道吗
用户应该自己负责输出吗?或者用户应该由outputter执行操作?除了程序必须输出的用户之外,还有其他类型的对象吗?你知道吗
相关问题 更多 >
编程相关推荐