정의 : 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다.
→ 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는 데 쓰인다.

위와 같이 Singleton b = Singleton.getInstance()의 객체는 Singleton객체를 인스턴스화 하지 않아도 접근할 수 있다. 이는 static으로 인해서 같은 객체의 값을 보장하게 된다.
장점
- 매번 인스턴스를 생성하지 않아도 되므로 메모리 낭비가 적어진다.
- 의존성 문제 : 모듈들을 쉽게 교체할 수 있는 구조가 되어 테스팅하기 쉽고 마이그레이션하기도 수월합니다.
단점
- 의존성 문제 : 모듈들이 더욱 더 분리되므로 클래스 수가 늘어나 복잡성이 증가될 수 있다. 약간의 런타임 페널티가 생기기도 한다.
- 테스트 문제 : 독립적인 테스트가 진행이 되려면 전역에서 상태를 공유하고 있는 인스턴스의 상태를 매번 초기화 해야한다. 이런 문제로 인해 안티 패턴이라고도 불린다.
※ 중첩 클래스
중첩 클래스를 이용해서 만드는 방법
중첩 클래스란 뭐지???
정의 : 클래스 내부에 선언한 클래스를 말하는데, 중첩 클래스를 사용하면 클래스의 멤버를 쉽게 사용할 수 있고
외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다.
'CS > 디자인패턴' 카테고리의 다른 글
옵저버 패턴 - 행위(by GoF) (0) | 2024.06.08 |
---|---|
전략 패턴 - 행위(by GoF) (0) | 2024.06.08 |
팩토리 패턴 - 생성(by GoF) (0) | 2024.06.07 |
디자인 패턴의 정의와 종류 (0) | 2024.06.07 |
라이브러리 vs 프레임워크 (0) | 2024.06.07 |