我有一个与自定义GWT小部件相关的问题。
我将创建一个自定义ListBox来执行语言选择。我试图通过扩展GWT的ListBox类来实现这一点并且它可以工作。
public class LanguageListBox extends ListBox {
....
}
但是,我认为从Java的角度来看,我们可能更喜欢复合而不是继承。我确实阅读了一些建议扩展Composite而不是widget本身的文章。
public class LanguageListBox extends Widget {
private final ListBox listBox;
LanguageListBox() {
listBox = new ListBox();
}
......
}
此课程不起作用。我相信我没有创建桥接方法,将调用语言列表的某些方法转发到包装的ListBox。但是,我已经检查过ListBox有很多方法,为了使这个设计有效,我需要转发哪种方法?
总而言之,我不确定这种情况下最好的设计是什么。
答案 0 :(得分:2)
尽管构图通常优先于遗传。在这种情况下,我肯定会继承,因为您基本上希望在窗口小部件中添加新功能或自定义现有功能,同时保留几乎所有ListBox
必须提供的功能。我认为通常在处理GUI组件时,通常是继承,并且在大多数情况下是最佳解决方案。
但是,您应该确保,如果不继承它,就无法与普通ListBox
达到相同的效果。
正如您所提到的,由于ListBox
和LanguageListBox
之间绝对没有桥梁,因此课程无效。它没有多大意义。
语言选择。我认为除非您想要一些非常特殊的功能,否则可以使用普通ListBox
来实现。