Java Swing:短语“有利于组合而不是继承”适用吗?

5

“偏好组合而非继承”的概念是否适用于 Swing 组件?在开始设计用户界面之前,我想收集一些专业意见,了解哪种代码更易于维护。


1
“为什么要使用这么多继承?”的意思是什么?历史上,Swing 在“优先考虑”被商定之前就已经完成了。 - duffymo
1
@duffymo,你对问题的理解是错误的。我谈论的不是Swing框架是如何设计的,而是如何围绕它设计一个框架。 - user1329572
1
好的,那么我会说,在Swing中,组合优于继承。很少有足够好的理由需要扩展一个Swing类。组合是你所需要的全部。 - duffymo
2个回答

7
“favor composition over inheritance”的思想是否适用于Swing组件?
是的。
我仅在需要覆盖其中一个或多个方法时才会扩展Swing组件。例如,当我想要覆盖paintComponent方法时,我会扩展JPanel。
其他情况下,我的类将包含我所需的Swing组件。这使我能够分开我的类方法:
frame.getMethod();

来自Swing组件类方法:

frame.getFrame().getPreferredSize();

4

试试这个...

1. 如果我不使用类的所有方法,或者这些方法不适用于我的类,我通常更喜欢使用组合而不是继承。

2. 组合使用HAS-A关系...

例如: 浴室 HAS-A 浴缸

   Bathroom cannot be a Tub

3. 继承发挥最大作用的情况,是在它被用于强制其子类继承一些特征时。

例如:

每辆四轮车都必须有方向盘、刹车、灯光、窗户等…

必须能够加速、刹车等…

因此,它的子类必须具备使其成为四轮车的特征。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接