JAVA Singleton Pattern


싱글톤 패턴 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Singleton{
    
    private static Singleton SINGLETON_CLASS_INSTANCE = new Singleton();
    public int a = 0;
    
    // 외부클래스에서 생성자에 접근할수 없다.
    private Singleton(){}
    
    // 생성자를 생성 및 호출해준다.
    // 외부에서 접근하는 클래스의 메모리 주소값은 모두 동일하다.
    public static Singleton getSingletonClass(){
        
        if(SINGLETON_CLASS_INSTANCE == null){
            SINGLETON_CLASS_INSTANCE = new Singleton();    
        }
 
        return SINGLETON_CLASS_INSTANCE;
    }
 
    public int get(){
        return a;
    }
    public void set(int a){
        this.a = a;
    }
}
cs


싱글통 패턴 사용 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class FirstClass{
    public FirstClass(){
 
        Singleton singletonClass = Singleton.getSingletonClass();
        System.out.println("a === " + singletonClass.get()); 
 
        singletonClass.set(100);
        System.out.println("a === " + singletonClass.get()); 
    }
}
 
public class SecondClass{
    public SecondClass(){
 
        Singleton singletonClass = Singleton.getSingletonClass();
        System.out.println("a === " + singletonClass.get());
    }
}
 
public class MyClass{
    public static void main(String args[]){
 
    FirstClass firstClass = new FirstClass();
    SecondClass secondClass = new SecondClass();
 
    }
}
cs
result 
a === 0    <- firstclass
a === 100  <- firstclass
a === 100  <-secontclass

동일한 주소를 가르킨다.

댓글