Front Controller 역할을하는 Java 서블릿을 작성하고 있습니다. 기능을 수행하려면 도메인 명령 패턴을 사용하고 있습니다. 현재 모든 명령을 초기화하고 명령의 이름 (문자열)을 키로, 개체를 값으로 맵에 저장하고 있습니다. 서블릿이 요청을 수신 할 때마다, 나는 같은 URL에서 명령 쿼리를 전달하여지도에서 명령을받을 :서블릿 및 명령 패턴, 런타임과 비교하여 컴파일 하시겠습니까?
// at init
Hashmap<String, DomainCommand> commands = new Hashmap<String, DomainCommand>();
commands.put("someCommand", new SomeCommand());
// at request
String command = request.getParameter("command");
DomainCommand c = commands.get(command);
c.execute();
이 잘 작동하고 내 DomainCommands 더 클래스는 스레드간에 공유 할 수 속성을하지 갖고 있기 때문에 내가 원하는 것을 . 이에 대한 대안으로 리플렉션을 사용하여 다음과 같이 객체를 생성 할 수 있습니다.
String command = request.getParameter("command");
DomainCommand c = Class.forName(command).newInstance(); // assuming in same (default) package
c.execute();
두 가지 모두 작동합니다. 어떤 성능/메모리 절약의 관점에서 더 나은 무엇입니까?
학교 프로젝트이므로 대부분의 기능을 직접 구현해야하지만 내 질문에 대한 답변을 주셔서 감사합니다. –