【发布时间】:2014-07-04 00:49:33
【问题描述】:
我试图对 PizzaFactory 类的代码使用反射,以便我可以删除 if else 条件并使我的代码更加动态。但我无法弄清楚如何。
Pizza.java
package PizzaTrail;
import java.util.List;
//this is the main abstract factory which will be extended by the concrete factory
public abstract class Pizza { public abstract List fetchIngredients(String Type); }
PizzaFactory.java
package PizzaTrail;
import java.util.List;
//this is the concrete factory
public class PizzaFactory extends Pizza
{
public static Pizza getConcretePizza(String PType)
{
Pizza p=null;
if (PType.equals("Cheese"))
{
p=new CheesePizza();
} else if (PType.equals("Pepperoni"))
{
p=new PepperoniPizza();
}
else if (PType.equals("Clam"))
{
p = new CalmPizza();
}
else if (PType.equals("Veggie"))
{
p= new VeggiePizza();
}
return(p);
}
}
ChessePizza.java
package PizzaTrail;
import java.util.ArrayList;
import java.util.List;
public class CheesePizza extends Pizza {
List ing = new ArrayList();
@Override
public List fetchIngredients(String Type)
{
ing.add("Ingredient : Shredded Mozzarella Cheese");
ing.add("Ingredient : Peppers");
ing.add("Ingredient : Feta cheese");
ing.add("Ingredient : Pesto");
return (ing);
}
}
}
谁能帮我获得在 PizzaFactory 类中使用的反射,以便我可以动态调用 CheesePizza 等类?
【问题讨论】:
-
看看枚举类型和 switch 语句
-
我想用反射方法替换 if else。就像我可以动态调用该类一样。我可以只写几行代码,它会检查并调用特定的类。没有 if else ......但使用反射。有可能吗?
-
为什么 PizzaFactory 扩展 Pizza??只是为了好玩?
标签: java class servlets dynamic reflection