构造函数重载中的设计问题

时间:2012-08-19 20:38:18

标签: java

我正在研究现有代码以增强功能。

在现有代码中,我看到有多个带字符串参数的构造函数。像

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

    public A(String a, String b){
    }

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

虽然增强我发现我需要在构造函数中添加另一个字符串参数。 然而,这似乎是一个问题,可能有另一个增强,我必须添加其他字符串。

我想避免这种情况。

避免这种情况的最佳设计是什么?

好的解决方案是使用HashMap吗?

2 个答案:

答案 0 :(得分:2)

  

好的解决方案是使用HashMap吗?

您要解决的问题并不是很清楚,但您可能需要考虑将参数封装在另一个类中 - 可能是一个可变的,遵循构建器模式。这会让你有类似的东西:

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

(您甚至可以在buildFoo()中使用FooParams方法来保持整个内容流畅。)

答案 1 :(得分: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>");