티스토리 뷰

Goal 

 - Singleton pattern에 대해 이해한다.

 - Singleton parttern의 생성 방법을 코드 예제를 통해 이해한다.

1. Singleton pattern

- 객체지향으로 프로그램을 유지보수에 용이하게 설계하기 위한 23가지 디자인 패턴의 일종으로. new를 통해 인스턴스를 생성하지 않고 메서드를 통해 인스턴스를 생성한다. 

 

 - 단 하나만 존재해야 하는 인스턴스가 필요할 때, 싱글톤 패턴을 생성한다. ex) 시간대 별 날짜, 소속된 직장 등 

 - C언어에서는 global이라는 변수를 사용하여 구현하고 Java에서는 클래스 안에서 구현한다.

 

 - Singleton pattern을 통해 생성되는 참조변수가 하나의 인스턴스만 참조할 수 있도록 클래스를 디자인한다.

 

1-1 Singleton pattern 생성 방법

 - 생성자는 private으로 선언하여, 외부에서 인스턴스를 생성하는 것을 제어한다.

 - static으로 유일한 인스턴스를 생성한다.

 - 외부에서 유일한 인스턴스를 참조할 수 있는 public static getInstance() 메서드를 구현하여, 미리 생성한 인스턴스를 변수에 대입한다.

 

 예제 1) Singleton pattern 구현 

public class Company {
    
    private static Company instance = new Company(); //private의 유일한 인스턴스를 만들어줌.
    
    private Company() {} // 생성자가 있기 때문에, 컴파일러가 생성자를 제공해주지 않지만, private로 선언했기 때문에 외부에서 생성자에 접근할 수 없게되어 인스턴스를 생성할 수 없는 상태가 됨.

    public static Company getInstance() { 
        
        if (instance == null) {
            instance = new Company();
        }
        return instance;
    }
}

 

예제 2) Singleton pattern으로 인스턴스 생성

//유일한 인스턴스를 만드는 싱글톤 패턴.

public class CompanyTest {

    public static void main(String[] args) {
        
        Company company = Company.getInstance();
        // = Company company = new Company();
        
        Company company2 = Company.getInstance(); //새로운 인스턴스를 생성하는게 아닌, 기본에 만들어진 인스턴스를 대입함
        
        System.out.println(company);
        System.out.println(company2); // company와 company2는 동일한 address를 지니고 있음.
        
        // 대표적인 싱글톤 패턴의 예로, Calendar 객체가 있다.
        Calendar calendar = Calendar.getInstance();

    }

}

 

 

'Java > Java 올인원 패키지' 카테고리의 다른 글

11. 객체 배열, 다차원 배열 (Java)  (0) 2020.03.15
10 . 배열이란? (Java)  (0) 2020.03.15
8. static 변수, 메서드 (Java)  (0) 2020.03.14
7. 객체 간 협력  (0) 2020.03.14
6. This (Java)  (0) 2020.03.14
댓글