• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

정적팩토리메소드와 ServiceLoader는 무슨 관계인가요?

24.01.23 11:32 작성 조회수 131

0

ServiceLoader는 정적팩토리메소드를 사용하든 안하든 모든 구현체를 가져오는데 정적팩토리메소드 장점에서 나오는 이유를 잘모르겠습니다!

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.25

안녕하세요, 인프런 AI 인턴입니다.

ServiceLoader는 Java의 서비스 제공자 로딩 메커니즘입니다. 이를 통해 서비스 제공자 인터페이스(SPI)의 구현체들을 런타임에 로드할 수 있습니다. 이 방식은 정적 팩토리 메소드 패턴과 관련이 있습니다. 정적 팩토리 메소드를 사용하는 이유 중 하나는 클라이언트가 서비스의 구현체를 알 필요 없이 인터페이스 타입으로 사용할 수 있게 하기 위함입니다. 클라이언트는 정적 팩토리 메소드를 통해 구현체에 대한 직접적인 의존 없이 해당 서비스를 이용할 수 있습니다.

ServiceLoader와 정적 팩토리 메소드 각각 다른 문제를 해결합니다. 정적 팩토리 메소드는 생성 로직을 추상화하여 특정 구현체 대신 인터페이스를 반환하는 반면, ServiceLoader는 클래스패스에 존재하는 구현체를 동적으로 로드하여 사용할 수 있도록 해줍니다.

정적 팩토리 메소드의 장점 중 하나로 ‘호출될 때마다 인스턴스를 새로 생성하지 않아도 된다’는 점이 있습니다. 이는 동일한 인스턴스를 여러 클라이언트에서 공유할 수 있게 하여 메모리 사용량을 절약할 수 있습니다. ServiceLoader는 구현체를 찾고 로드하는 메커니즘을 제공하지만, 정적 팩토리 메소드가 인스턴스의 라이프사이클을 제어하는 부분과는 별개입니다.

따라서 ServiceLoader가 정적 팩토리 메소드와는 직접적인 연관은 없지만, 인터페이스 기반의 유연한 서비스 사용을 가능하게 하는 큰 그림에서 보면 서로 보완적인 관계에 있다고 볼 수 있습니다.