스탭코딩


안녕하세요 스탭코딩 글 게시자 페이퍼클립입니다.




자바 코딩을 하다보면 객체를 필요 이상으로 생성하는 경우가 있는데 싱글톤 패턴을 사용하여 if문을 통해 같은 객체를 중복해서 생성하는 경우를 방지 할 수 있습니다




싱글톤 클래스의 생성자는 보통 아래와 같이 코딩됩니다.



1
2
3
4
5
public class Singleton {
 
       public Singleton() {
       }
}
cs



 


그러나 아래와 같이 싱글톤 패턴을 사용 할 경우 동일한 객체를 한번만 생성하게 되어 메모리 관리를 효율 적으로 할 수 있습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Singleton {
 
 
 private static Singleton instance;
 
 
       public static Singleton getInstance() {
 
              if (instance == null) {
 
                    instance = new Singleton();
 
              }
 
              return instance;
       }
 
       private Singleton() {
 
       }
 
}
cs




위 예제를 토대로 설명하겠습니다.




 [STEP 1. 생성자를 private 변경하기]


public 이었던 접근 한정자를 private로 변경하여 외부에서 new 키워드를 이용하여 객체를 생성 할 수 없게 방지합니다.


 



[STEP 2. private static으로 필드 생성하기]



외부에서 필드를 변경, 수정 할수 없도록 private 접근 한정자를 사용하고 외부에서 메소드를 바로 호출 할수 있도록 static으로 인스턴스화 해줍니다.





[STEP 3. 객체를 생성하는 메소드 만들기]


static으로 인스턴스화 해주고 public 접근 한정자를 사용하여  외부 클래스에서 메소드를 호출 할 수 있도록 합니다.


메소드 내용은 if 문으로 앞에서 만들어둔 필드가 null 일 경우(객체를 가리키고 있지 않은 경우)만 새로운 객체를 생성하여 리턴 하도록 합니다.