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

PPP*_*PHP 9 php oop design-patterns law-of-demeter

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

Tho*_*son 13

你误解了得墨忒耳法则并将其应用到了有用的范围之外:

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

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

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