我做了一个创建各种实例的类。它就像一个工厂。 因为我知道工厂类是单例或创建实例作为静态方法。 但我的课是春天的原型范围。它有成员变量。也有方法调用每个方法后调用序列 集成员变量。工厂类应该是单例还是静态方法?
我想知道在这种情况下它是如何设计的。 你能推荐更好的方式或好的命名吗?
我工作的Spring框架和Java 8 ..
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class FruiteFactory {
private String type;
@Setter
private Integer field; // set alfter call appleSupplier
public FruiteFactory(String type) {
Assert.notNull(type) ;
this .type = type ;
}
public < T> T create(Class<T > clazz) {
Object result;
if (clazz == Apple.class) {
result = appleSupplier.get();
} else if (clazz == Banana. class) {
result = bananaSupplier.get();
} else {
throw new IllegalArgumentException();
}
return (T) result;
}
private Supplier<Apple> appleSupplier =() -> {
Apple apple = new Apple();
// ...
return apple;
};
private Supplier<Banana> bananaSupplier =() -> {
Banana banana = new Banana();
banana.setField(field);
return banana;
};
}
@Service
public class FruiteService {
@Autowired ApplicationContext context;
public void buy(String type) {
FruiteFactory fruiteFactory = context.getBean(FruiteFactory.class, type);
Apple apple = fruiteFactory.create(Apple.class);
// save the apple
Integer no = apple.getNo();
fruiteFactory.setField(no);
Banana banana = fruiteFactory.create(Banana.class);
// ....
}
}
工厂模式从不强制工厂成为单身人士 – Dici