我做了一個創建各種實例的類。它就像一個工廠。 因爲我知道工廠類是單例或創建實例作爲靜態方法。 但我的課是春天的原型範圍。它有成員變量。也有方法調用每個方法後調用序列 集成員變量。工廠類應該是單例還是靜態方法?
我想知道在這種情況下它是如何設計的。 你能推薦更好的方式或好的命名嗎?
我工作的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