GWT使用接口而不是widget

时间:2010-06-05 16:17:26

标签: gwt

在小部件的定义中,什么是更好的练习,为什么,使用小部件本身或类型“更高”,例如,这是一个更好的做法

1)按钮myButton; 要么 2)Hastext myButton; (并稍后设置一个按钮)

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

使用“更高”类型或接口通常是个好主意。通过正确执行此操作,您可以隐藏实施细节。使用对象的代码将其视为更高类型的代码,并且实际隐藏在其后面的内容并不重要。这很好,因为您可以轻松更改对象的实现而不会破坏任何内容。

例如,在应用程序中定义面板时,您应该使用Panel类而不是其实现,例如HorizontalPanelVerticalPanel。:

Panel myPanel; 

然后您可以创建它的正确实现,例如HorizontalPanel

myPanel = new HorizontalPanel();

如果您稍后决定将myPanel更改为VerticalPanel,则无需更改使用myPanel的代码中的任何内容。一切都会好起来的。

但是你必须记住,你只能使用Panel课程中可用的方法。其他方法在例如无法访问HorizontalPanel。这实际上是您在选择小部件类型时应该记住的内容。您的窗口小部件应该是提供您要使用的方法的类型。

在您的示例中使用HasText而不是Button可能不是一个好主意,因为HasText只有设置和获取文本的方法,您可能还希望有权访问addClickHandler中提供了Button方法以及其他一些方法。

总而言之,使用“更高类型”是好的,但它们不应该“太高”而无用。

答案 1 :(得分:0)

答案就在于去年Google IO presentation by Ray Ryan引入的Model-View-Presenter模式。还有一个官方教程/文档 - part 1part 2。此处还有一些关于SO的问题涉及该主题:)

快速回答你的问题(一旦熟悉MVP就会更有意义):使用Presenter中的界面及其在View中的实现:)这样你的Presenter就会忘记底层的实现/ Widget你实际使用过(是Button还是Label?没关系,它们都实现了HasText)。