반응형
싱글톤 패턴
한 클래스에 한 인스턴스만 존재하도록 제한하는 패턴
특징
- 기본 생성자가 private
- static 팩토리 메소드인 getInstance
- 인스턴스를 저장할 static 필드
장점
- 하나의 인스턴스만 생성하므로 메모리 낭비를 방지할 수 있다.
- static으로 전역으로 사용되는 인스턴스이기 때문에 데이터 공유가 쉽다.
단점
- 여러 스레드에서 동시에 접근 할 수 있으므로 동시성 문제 유의하여 설계해야 한다.
- 단위 테스트는 격리된 환경에서 실행되어야 하지만, 싱글톤 패턴은 전역에서 사용하기 때문에 테스트가 어렵다.
- new 키워드를 직접 사용하여 클래스 안에서 객체를 생성하게 되므로 SOLID 원칙 중 DIP를 위반한다.
- 생성자가 private으로 선언되어 상속이 불가능하므로 자식 클래스를 생성할 수 없다.
- 상태를 가질 수 없다.
전체 코드
public class Singleton {
public static void main(String[] args){
IdentificationCard.getInstance();
}
}
class IdentificationCard{
private static IdentificationCard instance;
private IdentificationCard(){};
public static IdentificationCard getInstance(){
if( instance == null ) {
return new IdentificationCard();
}else{
return instance;
}
}
}
단점이 너무 많아서 잘 사용하지 않을 것 같지만 스프링 프레임 워크의 bean은 모두 싱글톤이다.
싱글톤의 단점들을 보완하여 스프링에서 싱글톤 객체를 관리해준다.
또한 이런 싱글톤 패턴들의 단점들을 보완한 패턴들도 많이 있다.
시간이 나면 정리해보는걸로🤔
반응형
'Clean Code' 카테고리의 다른 글
[Design Pattern] 구조 패턴 - 컴포지트 패턴 (0) | 2022.03.06 |
---|---|
[Design Pattern] 구조 패턴 - 데코레이터 패턴 (0) | 2022.03.03 |
[Design Pattern] 생성 패턴 - 프로토 타입 패턴 (0) | 2022.03.03 |
[Design Pattern] 생성 패턴 - 팩토리 메소드 패턴, 추상 팩토리 패턴 (0) | 2022.03.01 |
[Design Pattern] 생성 패턴 - 빌더 패턴 (0) | 2022.03.01 |