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 回答