0

我正在开发一个 Java swing 应用程序。没有大图形。只是带有 jcombos、jtexts、jlists 等的框架和对话框。我已经看到定制的 jcomboboxes 或 jtextfields 具有一些特定于应用程序的自定义功能。每种类型的 jcomponent 的每个自定义类都将在整个应用程序中使用。但我的想法是 - 为应用程序中显示的每个组件创建一个单独的类,并在他们自己的类中处理与它们相关的功能......而不是为应用程序中的所有 Jcombos 使用一个自定义类,我在想为单独的 jcombos 使用单独的类...可能我需要数千个类来显示尽可能多的元素(JComponents)。

例如:如果在 jdialog 中我有 5Jcombos、3 个 Jtextfields、2JCheckboxes - 我计划编写 5 个扩展 JComboBox 的自定义类、3 个扩展 JTextFields 的自定义类、2 个扩展 JCheckBoxes 的自定义类。

这是一件好事吗?我不知道设计模式和东西。这可行吗?这种方法已经被采用了吗?

4

3 回答 3

1

不,这不是一件好事。

我从事一个项目(多年),试图完全按照你的建议去做。数以千计的类将显着降低您的应用程序的速度,并使您的代码极难理解和维护。

一般来说,你不应该继承任何 Swing 组件,除非你改变它的行为。如果你可以使用组件的公共方法做你想做的事,你绝对不应该继承它。一个类(Swing 或其他)不应该仅仅因为想要使用它而被扩展。

于 2013-08-16T11:09:14.087 回答
0

我认为为每个用例编写一个类并不是一个好主意,但做一些通用的事情可能会更好。我曾经开发过一个 Swing 应用程序,其中我的表格有一些特定的样式。因此,当时我决定使用装饰器模式(我在其中添加了一些额外的样式,对 JTable 进行了调整)以及在需要使用此类表的任何地方。如果您不了解设计模式,可能不时浏览它们是一个好主意,这样您就会习惯它们......另外,我建议使用基本原则:低耦合和高内聚- 简而言之:尽量使类对其他资源没有太多依赖,这将使您的代码更易于维护,并尝试在您的类中完成特定的工作:不要在同一个类中混合不同的范围......

这只是我的主观意见。祝你好运!

于 2013-08-16T09:40:46.970 回答
0

是的,就像其他人已经说过的那样,尽可能使用组合而不是继承。但是,由于您说您不熟悉设计模式,我想知道您是否在这里提出了一个稍微不同的问题。

您是否有机会询问将事件侦听器放在哪里?即是否为对话框中的所有 JComboBox 设置一个可怕的事件侦听器,可能带有 switch 语句,或者每个组合框都有一个具体的事件侦听器类?如果这是您要问的,那么现代模式就是后一种。是的,您可能希望为每个组件创建一个单独的侦听器类(或多个侦听器类,如果您正在侦听不同的事件) - 只有这些是内部类,最好放置在您正在设计的主要组件中。

我强烈推荐 Eclipse 附带的 Window Builder,它是 WYSIWYG 并生成体面的 OO 代码,教您良好的设计模式,同时可以为您定制。

于 2013-10-04T20:34:05.573 回答