public class FactoryProducer {
public static AbstractFactory getFactory(String choice){
if(choice.equalsIgnoreCase("ENTITIES")){
System.out.println("entities factory created with out calling");
return new LoadEntityFactory();
}
elseif(choice.equals.IgnoreCase("UNITS"))
return new UnitFactory();
}
}
LoadEntity Class
public class LoadEntityFactory extends AbstractFactory {
@Override
public loadEntities getLoadEntity(String entity) {
if(entity==null){
return null;
}else if (entity.equalsIgnoreCase("categories")) {
return new LoadCategoryEntity();
}
else if (entity.equalsIgnoreCase("books")) {
return new LoadBookEntity();
}
else if (entity.equalsIgnoreCase("author")) {
return new LoadAuthorEntity();
}
else if (entity.equalsIgnoreCase("publisher")) {
return new LoadPublisherEntity();
}
return null;
}
}
现在我的问题当我调用FactoryProducer.getFactory(“entities”)时,是否会创建三个对象,当类加载到JVM中时会创建两个对象(实体和单元),而当我调用静态方法时会创建一个对象(实体和单元)?
答案 0 :(得分:2)
所有方法仅在调用时执行。不上课加载。如果要在加载类时执行某些操作,请使用静态初始化程序块。
当我调用FactoryProducer.getFactory(" entities")时,它会创建三个对象,当类加载到JVM时会创建两个对象(实体和单元),而当我调用静态方法时会创建一个对象(实体和单元) ?
getFactory
仅在调用时执行。不是在加载类时。 "entities"
时,第一个if
条件将为true,并且LoadEntityFactory
将在使用new LoadEntityFactory
else
条件不成立,因此不会调用new UnitFactory
并且不会创建UnitFactory
对象。