Java - 如何为2个类设计通用方法

Mos*_*ham 2 java design-patterns

我有两个单独的类,但他们都需要重复做一件事,换句话说,有一个共同的方法.这是方法:

private String createButton (String cls, String value) {
        return "<input type=\"button\" class=\"" + cls + 
                   "\" value=\"" + value + "\" key=\"" + this.id + "\" />";
        }
Run Code Online (Sandbox Code Playgroud)

所以这只是一个单行方法,所以我可以将它复制到两个类中.但我想知道是否有更好的方法.显然,我真的不想只使用那种方法.另外,我认为仅仅为按钮创建另一个类是愚蠢的:新的Button(cls,value),不是吗?

我想到的另一个选择是为包提供一个实用程序类,并混合使用辅助函数.那有意义吗?它完成了吗?

Ric*_*uen 7

您可以使用实用程序类......但它可能会变得不连贯.

public class Utilities {

    /* What do these methods have in common? */

    public String createButton(...) {
        return "<input type='button' />";
    }

    public double calculateCircumference(Circle c) {
        return circle.getRadius() * 2 * Math.PI;
    }

}
Run Code Online (Sandbox Code Playgroud)

这是一种通向神对象的黑暗道路的代码.

相反,考虑确定"实用程序"类的目的和意图:考虑将其作为工厂 - 特别是抽象工厂,以便保持凝聚力.

public class HTMLWidgetFactory implements AbstractWidgetFactory<String> { // the interface might be overkill

    /* Oh! This class is clearly used to create HTML controls! */

    public String createButton(...) {
        return "<input type='button' />";
    }

    public String createImage(...) {
        return "<img src='lena.png' />";
    }

}
Run Code Online (Sandbox Code Playgroud)