[1Day-1CS] 싱글톤 패턴

TraceofLight·2023년 3월 27일
0

ComputerScience

목록 보기
1/20
post-thumbnail

디자인 패턴이란?

프로그램 설계 시 발생했던 문제점이 존재
→ 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약으로 만듦

싱글톤 패턴

  • 하나의 클래스 = 하나의 인스턴스
  • 클래스 당 여러 개의 개별 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나만 사용
  • 보통 DB 모듈에 많이 사용
  • 생산성 ↑, 의존성 ↓

싱글톤 패턴의 단점

  • TDD(Test Driven Development: 테스트 주도 개발) 시 단위 테스트를 진행 시 Issue 발생 가능성

    의존성이 높은 싱글톤 패턴 특성상 각 테스트마다 독립적인 인스턴스를 만들기가 어려움

의존성 주입

  • 싱글톤 패턴의 모듈간 결합을 강하게 만드는 단점을 해결하기 위한 방법
  • 메인 모듈이 직접 다른 하위 모듈에 의존성을 주는 것 대신 의존성 주입자를 통해 간접적으로 의존성을 주입 (디커플링)

장점

모듈을 쉽게 교체할 수 있는 구조, Testing & Migration이 수월함, 의존성 방향의 일관성, Application 추론이 쉬워짐, 관계의 명확성 등등

단점

모듈이 더욱 분리 → 클래스 수의 증가로 복잡성 증대, 런타임 페널티

의존성 주입의 원칙

  • 상위 모듈은 하위 모듈에서 어떤 것도 가져오지 않음
  • 둘 다 추상화에 의존해야 함 + 추상화가 세부 사항에 의존하지 않음
profile
24시간은 부족한 게 맞다

0개의 댓글