当我们可以直接向方法添加依赖项时,创建组件并通过它们委派行为的原因是什么?在我看来,后者似乎为改变现有物体的行为而敞开了大门,从而创造了更为宽松的联轴器?
组成/授权:
class Human:
def __init__(self, legs):
self._legs = legs
def run(self):
self._legs.run()
def walk(self):
self._legs.run()
直接将依赖项注入方法:
class Human:
def run(self, legs):
legs.run()
def walk(self, legs):
legs.walk()
告诉我,为什么我根本不理会构图?
最佳答案
仅在达到目的时才应使用合成。在您的示例中,它没有任何作用,因为您可以直接在legs
上调用方法,而根本不用理会Human
。
在您的示例上进行扩展,如果每个Human
实例都有其自己独特的legs
实例,则组合很有意义。在这种情况下,您需要跟踪哪个legs
属于哪个Human
,第一个示例可以解决该问题。
关于python - 为什么要使用合成呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59007868/