gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:06:05 25 4
gpt4 key购买 nike

我正在研究面向对象的设计原则和启发式方法。
在 Arthur J. Riel(1996 年)的《面向对象的设计启发式》这本非凡的书中,我看到了这个启发式:

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

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

例如:label.getParent()

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

最佳答案

这里有两点:在软件工程中没有规则是一成不变的。它始终是关于平衡具有某种竞争力的不同方面。

然后:UI 组件的主要目的是(惊奇地)在 UI 中使用。通常,任何 UI 元素都属于一个父元素。您不能在两个窗口中显示相同的表格(可能是相同的数据,但不是 UI 表格对象!)。从那里开始:获取 UI 组件的父级是您一直需要的。 UI 元素始终是拥有的——当您可以轻松地上下移动时,它会更加方便。

长话短说:我认为您在这里看到的是一个非常特殊的情况 - 偏离某本书中规定的规则很有意义。

关于java - 为什么 Swing 组件有 .getParent() 方法,是否违反面向对象原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47500805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com