Demeter法则非常令人困惑,因为看起来我无法编写返回对象的方法

时间:2011-02-19 09:54:31

标签: php oop design-patterns law-of-demeter

感觉就像我走到了尽头。如果我理解它,那么如果我遵循Law of Demeter我永远不会创建一个返回对象的方法然后客户端代码调用它。我只是想着工厂模式总是返回一个对象。是的,有一些返回对象的mapper类。收藏怎么样?

1 个答案:

答案 0 :(得分:13)

你误解了Law of Demeter,并将其应用到了有用之外:

  

更正式地说,函数的Demeter法则要求对象O的方法M只能调用以下类型对象的方法:

     
      
  • O本身
  •   
  • M的参数
  •   
  • 在M
  • 中创建/实例化的任何对象   
  • O的直接组件对象
  •   
  • 一个全局变量,可由O访问,范围为M
  •   

特别是工厂用于创建对象,它们创建的对象类型是公共接口的一部分。因此,上面允许调用工厂创建的对象的方法。