프로그래밍/디자인패턴

디자인 패턴 - Singleton (Creational Pattern)

aiemag 2021. 3. 1. 10:49
반응형

Creational Pattern의 마지막인 Singleton Pattern에 대해 정리합니다.

 

세상(Process)에서 유일함을 보장하는 패턴입니다:)

 


Definition

Singleton은 instance가 한 개밖에 존재하지 않는 것을 보증하는 패턴입니다.

 

※ 디자인 패턴 중 가장 간단한 패턴이지만 가장 많이 쓰이는 패턴입니다.

 

 


Class Diagram

Singleton class의 constructor가 private으로 되어 있습니다.

※ 그래서 외부에서 객체를 별도로 생성할 수 없습니다.(중요)

 

member field인 singleton 역시 private으로 되어 있고 class가 memory에 로딩될 때 자신의 객체가 생성됩니다.

생성된 singleton 객체는 오직 getInstance()를 통해서만 참조 가능합니다.

 


Sample Case

다음은 Prototype 패턴을 적용한 시나리오입니다.

 

Scenario

 

우리는 제품 생산을 위해 공장(Factory)이 필요합니다.

 

세상에서 유일한 우리만의 공장(instance)은 오직 한가지 방법(getInstance())으로 접근이 가능합니다.

 

Class Diagram

Factory class의 instance는 class 로딩 시 생성되며, getInstance()를 통해서만 접근 가능합니다.

 

Code

 

1
2
3
4
5
6
7
8
9
10
11
public class Main {
 
    public static void main(String[] args) {
        Factory f1 = Factory.getInstance();
        Factory f2 = Factory.getInstance();
        if(f1==f2) {
            System.out.println("Same factory.");
        }
    }
}
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
public class Factory {
    private static Factory instance = new Factory();
    
    private Factory() {
        System.out.println("Factory instance has been made.");
    }
    
    public static Factory getInstance() {
        return instance;
    }
}
cs

 

실행 결과

 

반응형