지니, 개발하다.

[CS] 1-1. 싱글톤 패턴 본문

Study/CS

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

dev.genii 2023. 4. 1. 00:57

1. 싱글톤 패턴 (Singleton Pattern)

하나의 인스턴스를 다른 모듈들이 공유하는 패턴

- 인스턴스 생성비용이 작아지고 의존성이 높아짐
- 보통 DB연결 모듈에 사용

 

장점

  • 사용이 쉬움
  • 실용적임

단점

1. TDD시 걸림돌이 됨
    싱글톤은 미리 생성된 하나의 인스턴스를 기반으로 구현하므로 각 테스트마다 독립적인 인스턴스가 어려움

       TDD (Test Driven Development)
       단위테스트 : 테스트가 서로 독립적이어야하며 어떤 순서든 실행이 가능해야 함

 

2. 모듈간 결합을 강하게 만듦

   -> 의존성 주입으로 결합을 느슨하게 할 수 있음

 

의존성 주입(DI, Dependency Injection)

   - 의존성은 존속성과 유사함 ( A가 B에 의존성이 있다 = B의 변경사항에 대해 A도 변해야 함 )
   - 의존성 주입자를 통해 메인모듈이 하위모듈에 간접적으로 의존성 주입 -> 의존성 주입자에 의해 의존성이 낮아짐 = 디커플링 됨

 

의존성 주입의 장점

   1. 모듈을 쉽게 교체할 수 있는 구조

        - 테스팅이 쉬우며 마이그레이션이 수월함

   2. 구현시 추상회 레이어->구현체

        - 애플리케이션 의존성, 방향성 일관

        - 애플리케이션 쉽게 추론이 가능하며 모듈간 관계가 명확함

 

의존성 주입의 단점

   모듈의 분리

        - 클래스 증가, 복잡성 증가

        - 약간의 런타임 패널티 발생

 

의존성 주입원칙

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

   2. 상위/하위 모듈 모두 추상화에 의존함. 이 때, 추상화는 세부사항에 의존하면 안됨

 

 

상기 내용은 '면접을 위한 CS 전공지식 노트' 로 공부하며 정리한 내용입니다.

 

Hola

'Study > CS' 카테고리의 다른 글

[CS] 1-5. 프록시 패턴 / 프록시 서버  (0) 2023.04.29
[CS] 1-4. 옵저버 패턴  (0) 2023.04.28
[CS] 1-3. 전략 패턴  (0) 2023.04.28
[CS] 1-2. 팩토리 패턴  (0) 2023.04.28
[CS] 1. 디자인 패턴  (0) 2023.04.01
Comments