当我们可以直接向方法添加依赖项时,创建组件并通过它们委派行为的原因是什么?在我看来,后者似乎为改变现有物体的行为而敞开了大门,从而创造了更为宽松的联轴器?

组成/授权:

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/

10-10 23:04