为什么Swing组件有.getParent()方法,是否违反了面向对象的原则?

Gho*_*ani 3 java oop swing software-design object-oriented-analysis

我正在研究面向对象的设计原则和启发式方法.
在这本名为"面向对象设计启发式"的着名书籍中,Arthur J. Riel(1996)看到了这种启发式:

启发式4.13:一个类必须知道它包含什么,但它永远不应该知道谁包含它.基于J.Reil,主要原因是可重用性.

但是在Swing Structure中,我们可以直接访问Parent对象的引用.

例如: label.getParent()

所以我的问题是:
为什么swing组件有.getParent()方法?现有的这种方法有
哪些面向对象的原理启发式方法?

Gho*_*ica 7

这里有两件事:软件工程中没有任何规则可靠.它总是关于平衡不同方面的竞争力.

然后:UI组件的主要目的是(惊喜)在UI中使用.通常,任何UI元素都属于一个父元素.您不能在两个窗口中显示相同的表(可能是相同的数据,但不是UI表对象!).从那里开始:到达UI组件的父级是您一直需要的东西.UI元素始终拥有 - 当您可以轻松上下时更方便.

长话短说:我认为你在这里看一个非常特殊的案例 - 它偏离了某些书中写的规则很有意义.