"핸들러"에서 모듈을 분리하기 위해 리플렉션을 오래 사용해 왔습니다.어떻게 반사를 guice로 바꿀 수 있습니까?
내가 코드 이런 식으로 구조화되어 기본이 내 코드에서 나중에 그런
static enum AnimalHandlers {
Dog(Dog.class),
Cat(Cat.class);
private final Class c;
AnimalHandlers(Class class)
{
this.c=class;
}
public Class getAnimalHandler()
{
return c;
}
}
를, I는 입력으로 "동물"열거를 받아 반사 (즉, 그것은 도착를 사용하는 방법을 열거 형의 클래스)를 호출하고 "newInstance"를 호출하여 필요한 처리기를 호출합니다.
나는 해결책이 Guice에게 더 깔끔할 것이라고 생각한다. enum/reflection을 없애고 guice를 사용하여 도메인 제어 논리 처리기로 제어 모듈을 "수화"할 수 있습니까?
예제가 실제 코드보다 단순해질 수 있지만,이 방법은 단순히 'new' 만 사용하는 것이 아니라 구조화 된 것입니다. 왜 반사를 사용합니까? – aparker42
왜냐하면 .... 동물들은 다른 유형을 가지고 있다고 가정하고, 그것들의 큰 목록은 다른 핸들러에게 제어를 전달하는 클래스로 보내집니다. 처리 할 동물의 유형에 따라 if 문이 필요합니다 (블록에 여러 개의 새로운 문이 포함 된 큰 블록이 필요하므로 동물을 통해 반복되는 논리를 동물 자체에 연결하므로 유지 관리가 불가능한 시스템으로 이어진다). 여러 개발자가 쉽게 확장 할 수 없습니다 .... 그리고 테스트하기 어려운 js – jayunit100
솔직히 말하면, 열거 기반 솔루션이 그렇게 나쁘지는 않다고 생각합니다. 아마도 문제의 종류에 따라 쉽게 사용할 수있는 패턴이있을 것입니다 하지만 공통 디자인 패턴 중 하나를 찾지 못했습니다. 매번 새로운 핸들러가 필요합니까? 핸들러 클래스를 상태 비 저장으로 만들 수있는 경우 모든 열거 형 상수에 대해 하나의 인스턴스를 가질 수 있습니다. –