我正在研究现有代码以增强功能。
在现有代码中,我看到有多个带字符串参数的构造函数。像
public class A {
public A(String a){
}
public A(String a, String b){
}
public A(String a, String b, String c){
}
}
虽然增强我发现我需要在构造函数中添加另一个字符串参数。 然而,这似乎是一个问题,可能有另一个增强,我必须添加其他字符串。
我想避免这种情况。
避免这种情况的最佳设计是什么?
好的解决方案是使用HashMap吗?
答案 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>");