使用Factory类中的字段/变量在工厂创建的对象之间使用

时间:2014-02-06 12:35:24

标签: java oop design-patterns factory factory-pattern

我正在使用工厂来创建我的对象,例如,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重置为其默认值,以便稍后默认不使用先前设置的值。 这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

由于你的commonValue可以改变,一种更清洁的方式(恕我直言)将是:

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的可变值,某些代码可能会影响非相关代码)
  • 是线程安全的

答案 1 :(得分:-1)

我使用Spring框架来完成那种事情。让我在前面建立我的工厂,然后从他们那里建造。这是一个选择吗?