2

機能を強化するために既存のコードに取り組んでいます。

既存のコードでは、文字列パラメーターを持つ複数のコンストラクターがあることを確認しました。お気に入り

public class A {
    public A(String a){
    }

    public A(String a, String b){
    }

    public A(String a, String b, String c){
    }
}

拡張中に、コンストラクターに別の文字列パラメーターを追加する必要があることがわかりました。ただし、これは問題のようです。別の文字列を追加する必要があるという点で、別の拡張機能がある可能性があります。

そのようなシナリオは避けたい。

そのようなシナリオを回避するための最良の設計は何でしょうか?

良い解決策はHashMapを使用することですか?

4

2 に答える 2

2

良い解決策はHashMapを使用することですか?

解決しようとしている問題は明確ではありませんが、別のクラス(おそらく、ビルダーパターンに従って変更可能なクラス)にパラメーターをカプセル化することを検討することをお勧めします。それはあなたに次のようなものを残すでしょう:

FooParams params = new FooParams().withA("a value")
                                  .withB("b value")
                                  .withC("c value");
Foo foo = new Foo(params);

(すべてを流暢に保つbuildFoo()方法を用意することもできます。)FooParams

于 2012-08-19T20:43:15.073 に答える
2

varargsを使用するソリューションを試してください。

public class A {
    public A(String ... args) {
        // Add some logic that validates number of input parameters etc.

        for (String arg : args) {
            ...
        }
    }
}

あなたはそれをこのように呼ぶことができます:

A a1 = new A("tagA: value1", "tagB: value2", "tagC: value3");
A a2 = new A();
A a3 = new A("<tagA>234</tagA>");
于 2012-08-19T21:16:17.477 に答える