java中类之间的共享方法

时间:2014-08-13 13:08:38

标签: java swing design-patterns

我在java中有三个类似的类。他们持有三种不同形式的数据。

表单本身是扩展JPanel类的这三个类的内部类。它们有标签,文本字段和按钮。要将这些组件添加到JPanel,我使用了 为addComponent()设置GridBagConstraints的{​​{1}}方法。

此方法对于所有三个类都是相同的。我想将这种方法只写在一个地方,但我想不出一种优雅的方法。

我想到的一种方法是为原始类创建一个formData超类来保存此方法。如果有人有更好的想法,我会很感激。我是java的初学者,我拼命想简化我的代码。

2 个答案:

答案 0 :(得分:4)

我可以想到两种方法来实现这个目标:

  1. 包含经常使用的,定义明确的方法的实用程序类。

  2. 您继承的(可能是抽象的)超类。

  3. 如果您进行非特定类别的内容,例如格式化字符串,可能更优选实用程序类。

    如果你做类特定的实例化/计算之类的东西,那么你可能想要一个超类。如果您能够考虑超类的逻辑名称,例如FormData,那么可以选择超类是您想要的。

    你是正确的避免代码重复。几乎没有必要重复代码,当有必要时,可能需要时间来查看整体设计。

答案 1 :(得分:0)

每当你发现自己在几个不同的类中重复相同的代码时,你首先想到的是寻找一种创建超类的方法。你可以尝试这样的事情:

public abstract class FormData {

    public void addComponent(Component c) {
        // do stuff
    }
}

然后你的内部类只会扩展FormData,它会免费获得addComponent的定义!