0

对于项目 AA,我需要一个带有文本字段 a、b、c 的面板。我需要另一个面板,其中包含项目 BB 的文本字段 a、b、d、e、f。将来我肯定需要另一个带有文本字段 a、b、d、y、z 的面板用于项目 CC。再次在未来我可能需要另一个面板......等等。

a 和 b 文本字段对于所有项目都是通用的,d 对于 BB 和 CC 是通用的。常见字段的布局可能不同。面板包括 createComponents、guiLayout、refresh、save、getGUIErrors 等方法。

现在,我应该如何设计我的面板?继承呢?定义一个包含字段 a、b 的通用面板并为项目扩展它是否正确?是否可以使用组合,装饰器模式?

当然问题可以扩展到模型和控制器。

谢谢你 。

4

1 回答 1

1

现在,我应该如何设计我的面板?继承呢?定义一个包含字段 a、b 的通用面板并为项目扩展它是否正确?是否可以使用组合,装饰器模式?

虽然代码重用通常很好,但在我看来,您在这里过于复杂了。如果只是在面板上重复使用两个文本字段,为什么还要为所有这些工作而烦恼。我们正在讨论两行代码。

如果您的所有面板看起来都非常相似,请使用一个不错的布局构建器并重用该构建器(例如,请参阅 JGoodies 的 FormLayout 可用的构建器)。

除此之外,典型的 UI 层非常薄。如果需要/可能,重用您的业务方面(UI 背后的模型),但不要打扰 UI。以我的经验,这会导致代码更简洁。我见过太多的 UI/面板,其中构造函数需要很多布尔标志来包含/排除某些字段,一堆受保护的方法来提供对所有组件的访问(例如,在某些条件下禁用某个字段),...简而言之,代码很多,因为最终没有两个 UI 是相同的,并且您总是必须自定义。

于 2013-08-31T09:49:08.333 回答