인프런 커뮤니티 질문&답변

정승원님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

싱글톤 패턴

싱글톤이 DIP를 위반한다는 점에서 질문있습니다.

해결된 질문

작성

·

850

6

안녕하세요. 

수업을 듣다가 Singleton이 DIP를 위반한다는 점에서 여쭤보고 싶은 점이 생겼습니다.

클라이언트에서 의존성을 주입받는 다고 하고, A, B 두 클래스가 있을 때 B가 A를 상속받는 Singleton이라 가정하겠습니다.

클라이언트가 생성자 주입을 받든, Setter 주입을 받든 A에 의존하게 하고, 클라이언트에 의존성을 주입하는 Config(?)가 A를 넣는자리에 B를 넣어주면 DIP 문제가 해결되는 것이 아닌가요?

어째서 Singleton을 쓰면 DIP가 위반되는지 궁금합니다

답변 2

16

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. recordable542님 좋은 질문입니다.

말씀하신 것 처럼 중간에 Config를 넣으면 싱글톤이어도 DIP 위반을 피할 수 있습니다^^

그런데 싱글톤을 사용하면 public으로 공유 인스턴스를 사용할 수 있게 전역적으로 공개해버리기 때문에, 대부분 해당 인스턴스를 전역적으로 직접 참조해서 사용하게 됩니다. (싱글톤은 패턴의 의도가 해당 인스턴스를 직접 참조해서 사용하도록 getInstance()를 public static으로 열어둔 것입니다.)

감사합니다.

2

정승원님의 프로필 이미지
정승원
질문자