System.out.println是否违反了德米特定律?

Bil*_*ory 8 java law-of-demeter

是否System.out.println违反了德米特定律?

如果没有,为什么?

Man*_*tar 2

取决于视图。

LoD:是的,因为它使用控制台。在 LoD 下,您无法承担访问权限。

LoD-F:是的,因为它使用了多个点。LoD-F 规定,在任何方法使用中,只有对象可以知道其自身的内部结构。IE

System.out.println() 
Run Code Online (Sandbox Code Playgroud)

需要了解系统结构(它有 .out)才能到达 println(),

为了使系统不破坏 LoD-F,它必须是

System.println()
Run Code Online (Sandbox Code Playgroud)

为了用例子来打破正式规则, println() (方法)只能访问:

  1. 系统本身
  2. println() 的参数
  3. 在 println() 中创建/实例化的任何对象
  4. 系统的直接组件对象
  5. println() 范围内的全局变量,可由系统访问

(我知道,这里是一个反向引用,因为代码应该是调用它的方法,但它实际上是双向的。)