의 내가있다, 클래스 Unit
과 서브 클래스 UnitA
, UnitB
, UnitC
등자바 반사 나쁜 패턴?
모든 장치 클래스에는 다음과 같은 생성자 (이 예에서 RTS의 단위) 유사한 클래스가 많이 있다고 가정 해 봅시다 (포함 단위) 매개 변수를 포함
public class UnitX {
public UnitX(FileReader fr) {
...read parameters for constructing the unit...
}
}
내 파일 형식을
UnitX params
UnitY params
....
및 파일에있는 모든 단위의 목록을 작성하는 것은 내가 파일에서 개체를 만들 때 매우 자주이 패턴을 사용하는 것이 실현
Class[] params = {FileReader.class};
while(fr has more to read) {
String unitType = fr.getString();
Unit u = (Unit)
java.lang.reflect.Constructor constr = Class.forName(unitType).getConstructor(params);
Unit u = (Unit)constr.newInstance(new Object[]{fr});
list.add(u);
}
같은 동안 루프가 될 것입니다. 제 질문은 이것이 나쁜 패턴입니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?
유닛 클래스 자체가 파일러 리더/라이터에 상태를 읽고 쓰는 방법을 제공하는 것이 더 합리적이지 않습니까? 추가 단위 클래스는 내 공장 클래스에서 변경을 요구하지 않습니다. –
네, 그럴 수도 있습니다. 다만, 당신이 책임감을 혼합하고 있다는 것을 알아 두십시오. 그러나 당신이 알고있는 한 그것이 의미하는 바는 괜찮습니다. 단위 테스트는 일반적으로 의도적으로 단순하므로보다 직접적이며 결합 된 방법이 더 적합하기 때문에 종종 더 명확합니다. – mdma