나는 조직 내의 다른 부서에서 사용자 정의 된 사용을 허용하도록 확장하기 위해 노력하고있는 대규모 응용 프로그램이 있습니다.런타임에 사용중인 패키지를 변경할 수 있습니까?
각 부서는 서로 다른 요구를 가지고 있지만 동일한 클래스를 일부 공유 할 수 있지만 다른 요구 사항을 충족시키기 위해 다른 부서를 수정해야합니다.
내가 원하는 일은 각 부서의 새 패키지를 만들고 관련 패키지를 해당 패키지 아래로 이동시켜 분리 된 상태로 유지하지만 모두 동일한 전체 애플리케이션에 포함되도록하려는 것입니다.
는 지금, 내 패키지 구조는 다음과 유사합니다 내가 바라고 무엇
[src]
- Main.java
[view]
- D1 FXMLs
[controllers]
- D1 Controllers
[model]
-D1 Classes
가 구조 조정을 추가 부서, 많은 D1과 동일한 클래스 이름을 사용하여 (부서 1)를 포함하는 프로젝트입니다.
[src]
- Main.java
[D1]
[view]
- D1 FXMLs
[controllers]
- D1 Controllers
[model]
-D1 Classes
[D2]
[view]
- D2 FXMLs
[controllers]
- D2 Controllers
[model]
- D2 Classes
...etc
내가 필요 내 Main.java
(가) 실행시 변수의 값에 따라, 밖으로 작동하는 패키지를 결정합니다.
이 경우에도 가능합니까? 아니면 각 부서에 대해 완전히 별도의 프로젝트를 만들고 "로더"프로그램에서 실행할 프로젝트를 결정해야합니까?
편집 : 아마 내가 직접 답을 찾았습니다. Main.java
에 D1 또는 D2 패키지 내의 클래스를 호출하고 에 클래스가 앞으로 패키지를 올바르게 할당하도록 할 수 있습니까?
공장 패턴 (특히 추상 공장 패턴)을 읽습니다. –
JDK의 예제는 URL 스트림 처리를위한 팩토리입니다. 여기에서 구현을 찾을 수 있습니다 : [Factory implements URLStreamHandlerFactory] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/sun/misc/Launcher.java#Launcher) .공장). 이 예제는 리플렉션을 사용합니다. 리플렉션은 사용하고 싶지 않을 수도 있습니다. 하드 코딩 된 부서 이름 목록은 컴파일 타임에 미리 이름을 알고있는 경우에도 작동합니다. 반영은 런타임에 동적 구현 선택을 허용하는 것입니다. – jewelsea