싱글톤 패턴
CS02
정주행으로 보고있는 인프런 cs강의는 백엔드 언어로 설명이 되어있고 보통 데이터베이스 연결모듈에 많이 사용한다고
나는 접해보지 못할 디자인 패턴인가? 싶어 검색해보니 자바스크립트로도 충분히 구현할 수 있었다.
하나의 클래스에 하나의 인스턴스만 가지는 패턴! 본질은 같구만.
싱글톤 패턴
하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는데 쓰이며 보통 데이터베이스 연결모듈에 많이 사용함.
장점: 하나의 인스턴스를 기반으로 해당 인스턴스를 다른 모듈들이 공유하여 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어듦 그래서, ‘인스턴스 생성에 많은 비용’이 드는 I/O 바운드 작업에 많이 사용됨.
단점: 의존성이 높아지며 TDD를 할 때 걸림돌이 됨. TDD를 할 때 단위 테스트를 주로 하는데, 단위 테스트는 테스트가 서로 독립적이어야 하며, 테스트를 어떤 순서로든 실행할 수 있어야한다.
하지만 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 ‘독립적인’ 인스턴스를 만들기가 어려움.
* I/O 바운드: 디스크 연결, 네트워크 통신, 데이터베이서 연결
* 의존성이란 종속성이라고도 하며 A가 B에 의존성이 있다는 것은
B의 변경 사항에 대해 A또한 변해야 된다는 것을 의미함.