티스토리 뷰

Java

싱글톤 패턴

black.spade 2016. 4. 26. 15:07

public TestClass {

/*유일한 인스턴스 저장 객체 선언*/
private static TestClass uniqueInstance ;
private TestClass(){ }

/*외부에서 사용할 함수 선언 클래스를 생성할떄 쓴다 */
public static TestClass getInstance(){
if(uniqueInstance  ==null){   //있는지 체크 없으면
uniqueInstance  = new TestClass ();   //생성한뒤
}

return uniqueInstance  ;  //생성자를 넘긴다.
}
}

 

------------------------------------------------------------------------------------------------------------------------------------

1. 싱글톤이란?

프로젝트 진행시 어플리케이션 전 영역의 걸쳐 하나의 클래스의 단 하나의 인스턴스만을 생성하는 것을 싱글톤 패턴이라고 한다.

공통으로 사용하는 클래스(util class)에 적용하면 알맞을 것입니다.

예를들어 Trace를 찍어주는 TraceManager가 있다고 하면,

각각의 다른 클래스에서 Trace를 찍어 줄때마다

매번 TraceManager 클래스 인스턴스를 생성할 수는 없는 일입니다.

이것은 컴퓨터 자원을 낭비하는 일이고,

여러 인스턴스들이 생기다보면 서로 방해작용을 할 수도 있을 것입니다.

하지만,

싱글톤 패턴은 하나의 인스턴스에 접근 할 수 있는 전역적인 방법이므로,

남발해서는 안될 것입니다.

2. 싱글톤은 왜 쓰는건데?  
디자인 패턴을 사용하는 예제들을 보면 도입부에 getInstance 메소드를 정의하고 주석에 당당히 Single Tone패턴이라고 정의해둔 것을 볼 수 있다. 그럼 도대체 싱글톤은 왜 쓰는 것일까?

예를 하나 들어 보면 이해가 좀 더 쉬워질 것 같다.
ㅇㅇ문고에서 책을 관리하기 위해서는 관리대장이나 관리를 위한 프로그램이 필요하게 될 것이다.
관리대장을 만든다고 가정할 때 관리대장에는 책이름, 지은이, 출판사등  책에 대한 정보를 적게 될 것이다.
그러면 관리대장은 몇 권이 필요할까?
만약 한권의 관리대장이 ㅇㅇ문고에 있는 책정보를 모두 담을 수 있다면 정답은 당연히 한 권이 될 것이다.
책 100권이 있다고 관리대장도 100권을 만드는 사람은 없을 것이다;;
책을 관리하는 관리대장을 싱글톤이라고 생각하면 된다.
책은 100권, 1000권이 있어도 이를 관리하는 관리대장은 하나의 인스턴스면 된다.
이를 위해 프로그램 종료시점까지 하나의 인스턴스만을 생성하고 관리하는 것이 싱글톤의 개념이다.

3. 특징

1). 생성자가 없다..
즉 보통 클래스를 만들때 Test  test = new Test(); 로 생성한다 . 하지만 싱글톤 패턴은 new 로 생성자를 생성할수없다.

2). 1개의 인스턴스만 만들어진다.
만약 클래스가 메모리에있다면 더이상 만들지 않고 자기 생성된 생성자를 넘겨준다 .
아래와 같은 형태로 클래스 를 넘겨 받는다.
TestClass  test = TestClass.getInstance();

 

'Java' 카테고리의 다른 글

Tree구조  (0) 2020.02.26
직렬화(Serialization), 역직렬화(Deserialization)  (0) 2016.04.27
클래스변수, 인스턴스 변수  (0) 2016.04.03
변수 초기화(생성자, Setter&Getter)  (0) 2016.04.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함