PizzaFactory 클래스의 코드에 리플렉션을 사용하여 if else 조건을 제거하고 내 코드를보다 동적으로 만들려고했습니다. 그러나 나는 방법을 알아낼 수 없다.반사에 의한 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);
}
}
}
누군가가 나에게 내가 클래스 CheesePizza를 호출 할 수 있도록 pizzaFactory 클래스에 사용되는 반사 등 동적으로 얻을 도와 드릴까요?
당신은 팩토리 메소드에 concreate 피자의 클래스를 제공 할 수
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html – JasonSec
내가 반사 방법으로 경우 다른 사람을 대체 할 – Gus
열거 유형을 살펴, 스위치 문을 . 그것과 비슷하게 클래스를 동적으로 호출 할 수 있습니다. 몇 줄의 코드 만 작성할 수 있으며 호출 된 특정 클래스를 확인하고 가져올 수 있습니다. 그렇지 않으면 ... 반사를 사용합니다. 그것은 가능한가? –