我正在使用Factory创建如下所示的对象,此处MyObjectYourObject类均实现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的可变值,则某些代码可能会影响不相关的代码)
这是线程安全的

10-06 02:51