728x90
✔️ 디자인 패턴이란?
프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것
✏️ 싱글톤 패턴(Singleton Pattern)
- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
- 하나의 인스턴스를 통해 다른 모듈들이 공유하며 사용
> 장점: 인스턴스 생성 시 비용 절감
> 단점: 의존성이 높아짐
😈 단점
- TDD(Test Driven Development) 시 걸림돌
> TDD를 할 때 단위 테스트를 주로 하는데, 단위 테스트는 서로 독립적이어야 하나 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이기에 '독립적인' 인스턴스를 만들기가 어려움
- 결합도 ↑
> 싱글톤 패턴은 사용이 쉽고 실용적이지만 모듈 관의 결합을 강하게 만듦
➡️ 의존성 주입(Dependency Injection)을 통해 모듈 간의 결합을 느슨하게 만들어 해결 가능(느슨한 결합)
✨ 의존성 주입
> 장점: 모듈들을 쉽게 교체할 수 있는 구조가 됨
➡️ 테스팅과 마이그레이션이 수월 / 구현 시 추상화 레이어를 넣고 이를 기반으로 구현체를 넣기에 애플리케이션 의존성 방향이 일관되고, 쉽게 추론 가능하며 모듈 간의 관계가 상대적으로 명확해짐
> 단점: 모듈들이 더욱 더 분리되므로 클래스 수가 증가되어 복잡성 또한 증가될 수 있음
> 원칙:
1) 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 함
2) 둘 다 추상화에 의존해야 함
3) 추상화는 세부 사항에 의존하지 말아야 함
'나혼자 스터디 > Computer Science' 카테고리의 다른 글
디자인 패턴 - 팩토리 패턴 (0) | 2022.12.03 |
---|---|
라이브러리 / 프레임워크 (0) | 2022.12.01 |
서버-클라이언트 통신 이해하기(GET) (0) | 2022.01.25 |