일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 자바
- 약수구하기
- 알고리즘
- 프록시패턴
- 코테
- 이터레이터패턴
- 평균구하기
- 자바버전차이
- IF문
- 문자열
- 대문자 변환
- 반복제어문
- 참조자료형
- 메서드영역
- 자바의 구조
- 선택제어
- Algorithm
- 코딩테스트
- 제어키워드
- 자바의 메모리구조
- 디자인패턴
- 소문자 변환
- push에러
- 플랫폼독립성
- 스프링 스프링부트 차이
- 403error
- Java
- 노출모듈패턴
- 합 구하기
- 클래스영역
- Today
- Total
지니, 개발하다.
[CS] 1-1. 싱글톤 패턴 본문
[CS] 1-1. 싱글톤 패턴
dev.genii 2023. 4. 1. 00:571. 싱글톤 패턴 (Singleton Pattern)
하나의 인스턴스를 다른 모듈들이 공유하는 패턴
- 인스턴스 생성비용이 작아지고 의존성이 높아짐
- 보통 DB연결 모듈에 사용
장점
- 사용이 쉬움
- 실용적임
단점
1. TDD시 걸림돌이 됨
싱글톤은 미리 생성된 하나의 인스턴스를 기반으로 구현하므로 각 테스트마다 독립적인 인스턴스가 어려움
TDD (Test Driven Development)
단위테스트 : 테스트가 서로 독립적이어야하며 어떤 순서든 실행이 가능해야 함
2. 모듈간 결합을 강하게 만듦
-> 의존성 주입으로 결합을 느슨하게 할 수 있음
의존성 주입(DI, Dependency Injection)
- 의존성은 존속성과 유사함 ( A가 B에 의존성이 있다 = B의 변경사항에 대해 A도 변해야 함 )
- 의존성 주입자를 통해 메인모듈이 하위모듈에 간접적으로 의존성 주입 -> 의존성 주입자에 의해 의존성이 낮아짐 = 디커플링 됨
의존성 주입의 장점
1. 모듈을 쉽게 교체할 수 있는 구조
- 테스팅이 쉬우며 마이그레이션이 수월함
2. 구현시 추상회 레이어->구현체
- 애플리케이션 의존성, 방향성 일관
- 애플리케이션 쉽게 추론이 가능하며 모듈간 관계가 명확함
의존성 주입의 단점
모듈의 분리
- 클래스 증가, 복잡성 증가
- 약간의 런타임 패널티 발생
의존성 주입원칙
1. 상위모듈은 하위모듈에서 어떠한 것도 가져오지 않아야 함
2. 상위/하위 모듈 모두 추상화에 의존함. 이 때, 추상화는 세부사항에 의존하면 안됨
상기 내용은 '면접을 위한 CS 전공지식 노트' 로 공부하며 정리한 내용입니다.
'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 |