근본적인 문제가 있습니다.다른 속성을 가진 클래스 속성 가져 오기
다른 클래스 ("기술")를 확장하는 클래스가 여러 개 있습니다. ,의 내가 ID가 "89"과 서브 클래스의 설명을 얻을 필요가 가정 해 봅시다 이제
@Override
public int getID()
{
return 69;
}
@Override
public String getName()
{
return "name";
}
@Override
public String getDescription()
{
return "description";
}
:
public abstract int getID();
public abstract String getName();
public abstract String getDescription();
과 서브 클래스 :
는 "스킬"일부 추상 같은 방법이 포함되어 있습니다.
은> 클래스 명을 ID- 저장하는 해시 MAP하는 것보다,이 일을하고 수행하여 클래스의 객체를 얻는 쉬운 방법이 다음과 같은? 당신이 89 "것을 가지고 어디든지
Class cl = Class.forName(classname);
Object o = cl.getConstructor().newInstance();
Method m = cl.getMethod("getDescription");
return (String) m.invoke(o);
이것은 하나의 큰 코드 냄새입니다. 왜 이런 종류의 수업을 확인하고 있습니까? –
그것은 실제로입니다. 그게 내가 왜 더 좋은 길을 요구하는지. 예를 들어, 플레이어는 버프를 얻습니다. 나중에, 나는 선수가 여전히 광을 가지고 있고 나는 단지 ID를 가지고 있는지 확인해야한다. 하지만 그것에 대해 생각하고, 나는 또한 직접 광부의 인스턴스를 저장할 수 있습니다 .. – dr0n3
읽기 : http://steve-yegge.blogspot.com/2008/10/universal-design-pattern.html –