상세 컨텐츠

본문 제목

자바 객체지향 프로그래밍 - 9 [singleton pattern]

JAVA

by 덴마크 당나귀 2022. 12. 23. 12:12

본문

728x90

singleton pattern 

 

프로그램 작성시 인스턴스를 하나만 가져야 되는 경우가 있는데, 예를 들면 학교의 경우 학생은 많아야 되고 학교는 하나만 있어야 하는 경우가 있는데 이럴 경우 singleton pattern 을 쓴다.

- 생성자는 private

- static으로 유일한 객체 생성

- 외부에서 유일한 객체를 참조할 수 있는 public static get() 메서드 구현 (일반 메서드는 인스턴스를 통해서 호출해야 되는데 다른데서 호출할 수 없게 private static으로 인스턴스를 하나 만들어둔 것이므로 외부에서 호출하게 하기 위해서 public static으로 getter를 만들 때 선언을 해줘야 한다. 그 이유는 static 메소드는 클래스 메소드라고 불리는 만큼 인스턴스가 생기지 않아도 쓸 수 있으므로 static 메소드로 만들어야 한다.)

 

public class Company {

    //singleton pattern

    private static Company instance = new Company();

    private Company() {}

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

}

위와 같이 getter를 만들 때 static함수로 만들어줘야 한다.

public class CompanyTest {
    public static void main(String[] args) {
        Company company1 = Company.getInstance();

        Company company2 = Company.getInstance();

        System.out.println("company1 = " + company1);
        System.out.println("company2 = " + company2);


    }
}

 

<출력>

company1 = staticex.Company@1554909b
company2 = staticex.Company@1554909b

 

 

이런식으로 코드를 짜줬을 때 출력값을 보면 주소값이 같은 것으로 보아 singleton pattern 임을 확인할 수 있다.

728x90

관련글 더보기