我正在使用Factory创建如下所示的对象,此处MyObject
和YourObject
类均实现MyInterface
:
public class MyFactory {
public static MyInterface myObject(int value, int commonValue) {
return new MyObject(value, commonValue);
}
public static MyInterface yourObject(String str, int commonValue) {
return new YourObject(str, commonValue);
}
}
我想在工厂级别设置
commonValue
,而不是在单个方法中将它们作为参数传递,因为传递相同的值以使用工厂创建对象集。同样,一旦使用工厂创建了一组对象,我想将commonValue
重置为其默认值,以便以后默认情况下不使用以前设置的值。什么是正确的方法?
最佳答案
由于您的commonValue
可以更改,因此更简洁的方法(IMHO)为:
public class MyFactory {
private final int commonValue;
public MyFactory (int commonValue) { this.commonValue = commonValue; }
public MyInterface myObject(int value) {
return new MyObject(value, commonValue);
}
public MyInterface yourObject(String str) {
return new YourObject(str, commonValue);
}
}
当您需要重置它时,只需创建一个新工厂即可。
好处是:
很清楚值是什么(如果您使用带有setter的可变值,则某些代码可能会影响不相关的代码)
这是线程安全的