본문 바로가기
나혼자 스터디/Computer Science

디자인 패턴 - 싱글톤 패턴

by jungwonyu 2022. 12. 1.
728x90

 

✔️ 디자인 패턴이란?

 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것

 

✏️ 싱글톤 패턴(Singleton Pattern)

- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴

- 하나의 인스턴스를 통해 다른 모듈들이 공유하며 사용

 > 장점: 인스턴스 생성 시 비용 절감

 > 단점: 의존성이 높아짐

 

😈 단점

- TDD(Test Driven Development) 시 걸림돌

 > TDD를 할 때 단위 테스트를 주로 하는데, 단위 테스트는 서로 독립적이어야 하나 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이기에 '독립적인' 인스턴스를 만들기가 어려움

 

- 결합도 ↑

 > 싱글톤 패턴은 사용이 쉽고 실용적이지만 모듈 관의 결합을 강하게 만듦

 ➡️ 의존성 주입(Dependency Injection)을 통해 모듈 간의 결합을 느슨하게 만들어 해결 가능(느슨한 결합)

 

출처: 길벗

✨ 의존성 주입

> 장점: 모듈들을 쉽게 교체할 수 있는 구조가 됨

➡️ 테스팅과 마이그레이션이 수월 / 구현 시 추상화 레이어를 넣고 이를 기반으로 구현체를 넣기에 애플리케이션 의존성 방향이 일관되고, 쉽게 추론 가능하며 모듈 간의 관계가 상대적으로 명확해짐

> 단점: 모듈들이 더욱 더 분리되므로 클래스 수가 증가되어 복잡성 또한 증가될 수 있음

> 원칙:

  1) 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 함

  2) 둘 다 추상화에 의존해야 함

  3) 추상화는 세부 사항에 의존하지 말아야 함