在小部件的定义中,什么是更好的练习,为什么,使用小部件本身或类型“更高”,例如,这是一个更好的做法
1)按钮myButton; 要么 2)Hastext myButton; (并稍后设置一个按钮)
感谢您的回答。
答案 0 :(得分:1)
使用“更高”类型或接口通常是个好主意。通过正确执行此操作,您可以隐藏实施细节。使用对象的代码将其视为更高类型的代码,并且实际隐藏在其后面的内容并不重要。这很好,因为您可以轻松更改对象的实现而不会破坏任何内容。
例如,在应用程序中定义面板时,您应该使用Panel
类而不是其实现,例如HorizontalPanel
或VerticalPanel
。:
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 1和part 2。此处还有一些关于SO的问题涉及该主题:)
快速回答你的问题(一旦熟悉MVP就会更有意义):使用Presenter中的界面及其在View中的实现:)这样你的Presenter就会忘记底层的实现/ Widget你实际使用过(是Button
还是Label
?没关系,它们都实现了HasText
)。