싱글톤 패턴이란?

- 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴

- static변수, 메서드를 활용하여 구현할 수 있음

 

** 디자인 패턴?

객체지향 프로그램에서 어떻게 하면 좀 더 효율적으로 객체지향 프로그램을 구현해서 추후 유지보수 하는 데에서 수정이 쉽고(확장성이 좋고) 좀 더 객체지향에 적합하게 코딩을 할 것인가에 대해 여러가지 패턴으로 정리해 놓은 것. 23가지 정도 있음. 그 중 하나가 싱글톤 패턴!

 

ex) 하나의 회사가 있고, 직원이 여러명인 상황

 

- 싱글톤 패턴 코드

1
2
3
4
5
6
7
8
9
10
11
public class Company {
    private static Company instance = new Company();
 
    private Company() {}
 
    // 외부에서 사용할 수 있도록 public으로 getter 생성
    public static Company getInstance() {
        if(instance == null) instance = new Company();
        return instance;
    }
}
cs

 

- 사용하는 코드 : new를 사용하여 인스턴스를 새로 생성하는것이 아니고, static으로 이미 만들어진 인스턴스를 가져가다 쓰는 것. 따라서 클래스를 활용하여 호출하고, 호출된 Company의 주소값은 동일함!(같은것을 가져다가 쓰기 때문)

1
2
3
4
5
public static void main(String[] args) {
    Company company1 = Company.getInstance;
    Company company2 = Company.getInstance;
    // company1 과 company2의 주소값은 동일함!
}
cs

 

 

=> Company는 외부에서 생성할 수 없고, private으로 내부에서 생성되어 있으며, getInstance() 메서드로만 제공되고 있다. 따라서 getInstance()로 내부에서 생성되어있는 Company만 사용할 수 있다. 이것이 싱글톤 패턴이다!

 

유일한 객체를 제공할 때 싱글톤 패턴을 쓴다.

 

대표적인 예로 java.util.Calendar 가 있다. 아래 코드처럼 불러와서 사용한다.

1
Calendar calendar = Calendar.getInstance();
cs

출처 : 패스트캠퍼스

+ Recent posts