상세 컨텐츠

본문 제목

Singleton Pattern 배워보기

Java

by techbard 2014. 1. 17. 17:20

본문

반응형

항상 동일한 객체를 이용해서 동작하고자 할 때 사용한다. 객체를 얻어오더라도 항상 기존 존재하는 객체를 재사용할 수 있으므로 거의 전역변수처럼 사용하지만 용도에 맞지 않게 사용하면 재앙이 된다고 한다.

 

참고한 소스를 실행해보면서 확인해 보자.

 

 

 

1. 먼저 생성자를 private 변경자로 지정해서 외부에서 new로 객체를 생성하지 못하게 만든다.

 

2. getInstance() 메소드를 static으로 지정해서 클래스명.메소드 방식으로 호출할 수 있게 한다.

 

3. 멀티쓰레딩에 유효하도록 volatile 키워드 지정하고 static 타입으로 객체 인스턴스를 저장하는 변수를 선언한다.

 

4. getInstance() 메소드는 SingletonPattern 클래스의 객체가 null인 경우에만 SingletonPattern 객체를 싱크로나이즈하고, 다시 null인지 판단해서 null인 경우에만 새로운 객체를 생성한다.

 

5. getInstance() 메소드는 SingletonPattern 객체가 null인 경우에만 새로운 객체를 생성하는 것을 보장한다.

 

6. 정말인지 확인해 보자.

먼저 비교를 위해 빈 클래스 Test를 만들고 Test 객체 두 개와 class.getInstance() 메소드로 만든 객체 두 개가 서로 같은지 비교해 보자.

 

 

 

결과:

S1 == S2
T1 != T2

즉,

 

1) class.getInstance() 메소드로 생성한 클래스는 여러 번 생성 요청을 해도 같은 객체가 리턴되며

2) new로 생성한 객체는 서로 다른 객체임을 확인했다.

 

SingletonPattern.zip

 

 

반응형

관련글 더보기

댓글 영역