inflearn logo
강의

講義

知識共有

エフェクティブJava完璧攻略パート1

アイテム 1. 核心整理 - 静的ファクトリーメソッドの利点3, 4, 5

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

346

kktrkkt

投稿した質問数 7

0

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

java

回答 1

0

communityai8509

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

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

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

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

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

JAR파일 dependency 관련하여 질문드립니다.

0

229

2

선생님 작성한 정적 팩토리 메서드에 대해 의견 주실 수 있으실까요??

0

306

2

책에 쓰여 있는 스레드 안전에 대한 제 생각

0

295

2

프로젝트 설정 관련 질문

0

753

1

브릿지 패턴과 서비스 제공자 프레임워크 관계

0

280

1

[과제] EnumMap과 EnumSet가 HashMap과 HashSet보다 효율적인 이유

0

543

1

강의 제목 오타 발견!!! 뚜둥

0

283

1

mvn install

1

458

1

강의 코드

0

486

2

Builder 필수값 질문입니다.

0

1044

1

Elvis, IElvis 질문이 있습니다.

0

478

1

EnumMap, EnumSet 정리

0

1003

1

HelloService 구현체

0

407

1

[과제] 강의 너무 만족스럽습니다.

0

716

1

PhantomReference 가 소멸되는 시점을 보는 코드 부분이 약간 이상한것 같습니다.

1

545

2

안녕하세요

2

682

1

객체 소멸에 관한 질문

0

544

0

정적 팩토리 메서드에 대해 질문이 있습니다.

0

542

0

Mock test 관련 질문입니다!

0

530

1

안녕하세요 선생님, 강의를 보고나서 Optional 소스코드를 뜯어보다가 어려운 부분이 있어서 질문 드립니다.

2

522

2

기선님 질문있습니다..

0

381

1

intellij의 equals 자동 생성 기능

1

521

1

Builder에 default값 추가하기

0

304

1

[과제] EnumMap, EnumSet

8

882

1