코딩일기/Java

[JAVA] 디자인패턴 - 싱글톤

심심한잉여 2022. 3. 20. 23:41
반응형

싱글톤이란, 어떤 클래스의 인스턴스 개수가 최대 한 개를 넘지 않도록 하는 패턴

이 인스턴스는 공유자원으로서 중심의 역할을 한다.

 

장점
1. 메모리 낭비 방지 : 한번의 인스턴스 생성으로 인해 낭비방지
2. 전역 인스턴스이므로, 다른 클래스의 인스턴스에서 데이터 공유가 용이
3. 두번째 호출 시 객체 로딩시간이 줄어 성능 향상

주의점
멀티쓰레드 환경에서는 동시에 객체 생성 유무를 체크 -> 하나의 객체만 생성해야됨

 

단점
1. 싱글톤을 사용하여 여러곳에서 효과적으로 호출할 수 있어서 편하지만 결과적으로는 영향이 커져 변경 시 다른부분에서도 영향을 미치게 될 수 있음 -> 설계에 제약이 생김
2. 초기화 시점을 제어할 수 없음 -> 멀티쓰레드에서 명시적 초기화가 필요한 경우, 쓰레딩 문제를 예방하기 위해 다른 조치가 필요

public class SingleTonTest{

// 정적으로 인스턴스 생성
private static SingleTonTest instance = new SingleTonTest();

// 생성못하도록 프라이빗으로 생성자 설정
private SingleTonTest(){
}

// 싱글톤 인스턴스 리턴 메소드
public static SingleTonTest getInstance(){return instance;}

}
반응형