2009-08-06 3 views
2

의 내가하고 구성 파일을 가져 오는 클래스 A를있다. 지금 당장 내가하고있다 :의 getResource() 다른 클래스

A.class.getResource("cfgFile"); 

그러나 그것은 옳지 않다.

ABCfg와 같은 새로운 클래스를 만들고 리소스 경로에 cfgFile을 추가하려고했지만 최선의 방법인지 확신 할 수 없습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

읽어 주셔서 감사합니다.

답변

1

구성 클래스를 만들거나 구성 데이터를 가져 오는 다른 방법을 제공해야합니다. B는 A의 구성이 어디에 있는지, 심지어 A의 구성이 필요한지에 의존하지 말아야합니다. 나는 당신이 Dependency Injection을 들여다 볼 것을 제안합니다.

예를 들어, B는 구성을 찾을 위치를 알아야 할 책임을 B가 담당하는 대신 작업을 수행해야하는 구성으로 구성 할 수 있습니다. 후자의 접근 방식은 단단히 결합 된 코드로 이어지고 테스트는 점점 어려워집니다.

3

A에 새로운 정적 방법으로 getClass().getResource()을 래핑하여 캡슐화 할 수 있습니다. 이렇게하면 호출 코드에 영향을주지 않고 구현을 나중에 변경할 수있는 유연성이 있습니다.

A은 구성 정보를 제공하는 것 이상의 다른 책임이있는 경우이를 위해 새 클래스를 만드는 것이 좋습니다. 하지만 getResource() 콜을 캡슐화하는 것은 여전히 ​​가치가 있습니다.