반응형
728x170
가끔 프로그램을 하다 보면 단 하나의 객체만 만들도록 보장해야 하는 경우도 있다. 단 하나만 생성된다고 해서 이 객체를 싱글톤(Singleton)이라고 한다.
이러한 싱글톤을 만드려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다.
생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 된다.
그리고 자신의 타입인 정적 필드를 하나 선언하고 자신의 객체를 생성해 초기화한다. 자신의 클래스 내부에선 new 연산자로 생성자로 호출이 가능하다. 정적 필드 또한 private 접근 제한자를 붙여 외부에서 필드 값을 사용못하게 막고 대신 외부에서 호출 할 수 있는 getInstance()메소드를 선언하고 객체를 리턴한다
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 28 29 30 | class Singleton { private static Singleton sgl = new Singleton(); private Singleton() {} static Singleton getInstance() { return sgl; } } class B { //Singleton s = new Singleton() //->에러 Singleton s = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); if(s == s2) { System.out.println("같은 Singleton 객체입니다."); } else { System.out.println("다른 Singleton 객체 입니다."); } //결관 같은 객체로 나온다. } Colored by Color Scripter |
위 소스는 예제 소스이다.
실행해보면 결과 값이 같게 나온다. 같은 객체를 리턴하기 때문
이와 같이 한번만 객체를 생성하는 것이 싱글톤이다.
반응형
그리드형
'java' 카테고리의 다른 글
자바 접근 제한자(publlic, private, protected, default) (0) | 2017.08.14 |
---|---|
자바 import (0) | 2017.08.14 |
자바 정적 멤버, static (0) | 2017.08.10 |
자바 메소드 (0) | 2017.08.10 |
자바 생성자 (0) | 2017.08.10 |