싱글톤 패턴

 - 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.

 - 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool), Calendar 클래스 같은 상황에서 사용한다.

 

 싱글톤 패턴의 특징

 - 하나의 인스턴스를 생성해서 사용한다.

 - 공통된 객체를 여러개 생생해서 사용해야하는 상황에서 많이 사용한다.

 - 적절히 사용하면 메모리 낭비를 방지할 수 있지만 남발시 오히려 메모리 문제가 발생할 수 있으니 꼭 필요한 경우 아니면 사용을 지양한다.

 

 싱글톤 패턴의 단점

 - 전역 인스턴스이기 때문에 데이터 공유 우려가 있다.

 - 멀티쓰레드 환경에서 동기화 처리를 안하면 인스턴스가 두 개 생성된다든지 하는 경우가 발생할 수 있다.

 

 static과 차이점

 - static을 붙여 클래스 변수, 클래스 메서드 생성시 바로 메모리에 올라가는데 싱글톤 패턴은 호출시에 메모리에 올라가고 유지한다. 

 

 

 코드 예제

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.test;
 
public class Singleton {
 
    //클래스 변수
    private static Singleton singleton;
    
    //생성자 private
    private Singleton() {}
    
    //Singleton 인스턴스를 얻기 위한 static 메서드
    public static Singleton getInstance() {
        
        if(singleton == null) singleton = new Singleton();
        System.out.println("Singleton Instance created");
        
        return singleton;
    }
}
 

 

1
2
3
4
5
6
7
8
9
10
11
package com.test;
 
public class SingletonCall {
 
    public static void main(String[] args) {
 
        Singleton.getInstance(); // Singleton Instance created
 
    }
 
}
 

'교육 > Java' 카테고리의 다른 글

#115 Java 복습 (기본형, 참조형, null, Collection)  (0) 2019.10.30
#113 Java MVC 패턴, model1과 model2  (0) 2019.10.28
#104 Java static  (0) 2019.10.15
#103 Java ++ 연산자  (0) 2019.10.14
#101 Java 2차원 배열 알고리즘  (0) 2019.10.10

+ Recent posts