在摆动 GUI 中选择继承与组合 [重复]
Posted
技术标签:
【中文标题】在摆动 GUI 中选择继承与组合 [重复]【英文标题】:Choosing between inheritance vs composition in swing GUIs [duplicate] 【发布时间】:2015-06-20 01:49:03 【问题描述】:我习惯于使用 netbeans 拖放进行 java swing 编程,从来没有真正关心过它生成的代码。现在我正在学习编写无需拖放的 GUI 代码。
我遇到的根本问题是,我要制作的窗口是IS_A
JFrame 还是HAS_A
JFrame。即是否使用继承或组合。
如果 MyWindow 是 JFrame
public class MyWindow extends JFrame
如果 MyWindow 有 JFrame
public class MyWindow
private JFrame frame;
在我看来,两者都很好。但我想应该有一个正确的方法来做到这一点。什么是正确的方法,为什么?
【问题讨论】:
【参考方案1】:如果您希望您的类表现得像一个窗口,那么您应该从 JFrame 扩展它(至少在我看来)。据我所知,你应该这样做。
另一方面,如果您想要一个可以访问窗口的类,那么您将使用第二个选项。话虽如此,您仍然会在某些时候需要初始化一个从 JFrame 扩展的类。
编辑:问题的答案确实如此,但它也说这取决于你所追求的。如果我正确理解了答案(也许其他人可以对此发表评论),如果您有一个需要框架来将列表打印到表格的场景,您可以拥有一个 extends
Frame 的类并提供一个实用方法接收一个列表并将其打印到一个表中。然后,您的逻辑将实例化此类而不是实际的 JFrame 并使用它来显示数据。
我的方法通常是,我有一个扩展 JFrame 的类,并提供了一系列使打印数据变得容易的方法。然后我会有另一个类,它链接逻辑层和视图层。该类将引用 JFrame 扩展类。
【讨论】:
@assylias 指出的问题指出,组合是首选。您对此有何看法? @DesirePRG:我试图放大我的答案。如果您还有任何疑问,请告诉我。以上是关于在摆动 GUI 中选择继承与组合 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何添加文件选择器以摆动 GUI 表单调色板组件 IntelliJ IDEA