2

私には2つの別々のクラスがありますが、どちらも1つのことを繰り返し実行する必要があります。つまり、共通のメソッドがあります。これは方法です:

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

つまり、これは実際には1行のメソッドなので、両方のクラスにコピーできます。しかし、私はそれを行うためのより良い方法があるかどうか疑問に思いました。もちろん、そのメソッドだけでスーパークラスを作成したくはありません。また、ボタン専用の別のクラスを作成するのはばかげていると思います。新しいButton(cls、value)ではありませんか?

私が考えたもう1つのオプションは、ヘルパー関数を組み合わせた、パッケージのユーティリティクラスを用意することです。それは理にかなっていますか?行われていますか?

4

5 に答える 5

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;
    }

}

これは、暗い道を神オブジェクトに導く一種のコードです。

代わりに、「ユーティリティ」クラスの目的と意図のスコープを検討してください。まとまりを維持するために、ファクトリ、特に抽象ファクトリにすることを検討してください。

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' />";
    }

}
于 2012-11-21T18:14:45.880 に答える
2

プロジェクトの規模に応じて、ユーティリティクラスを作成することをお勧めします。これは、広く使用されているすべてのヘルパーを含む1つのクラスを持つことが非常に効率的です。これが私がそれについてどうやって行くかの例です:

public class Util{

    private static final Util instance = new Util();

    public static Util getInstance(){
        return instance;
    }

    private Util(){}

    public String createButton (String cls, String value) {
        return "<input type=\"button\" class=\"" + cls + 
               "\" value=\"" + value + "\" key=\"" + this.id + "\" />";
    }
}
于 2012-11-21T18:08:41.753 に答える
2

はい、ヘルパー関数を持つユーティリティ クラスは、ここに行く正しい方法です。共有ユーティリティとなる他の要件も出てくるでしょう。それらはすべてユーティリティ クラスに含まれます。

于 2012-11-21T18:05:24.013 に答える
0

最良のアプローチは、さまざまなクラスで繰り返し使用されるヘルパー メソッドを含むクラスを含むユーティリティ パッケージを作成することです。要件が追加され、システムが拡張されます。また、可能であれば、ユーティリティ パッケージを他のプロジェクトと統合することもできます (再利用性)。

于 2012-11-21T18:06:19.897 に答える
0

さて、あなたの特定の関数はインスタンスのプロパティを変更しません。次のようなことができますか?

public static String createButton (String cls, String value, int id) {
        return "<input type=\"button\" class=\"" + cls + 
                   "\" value=\"" + value + "\" key=\"" + id + "\" />";
        }
于 2012-11-21T18:15:21.037 に答える