Java !!!

자바 싱글톤

asdwasd12as 2015. 4. 1. 10:42

class Single{
 public int x = 100;
 static Single single = new Single();
 private Single(){} // private으로 생성자.
 public static Single getInstance(){
  return single;
 }
}

public class SingleEx {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  // Single s1 = new Single(); 오류.
  Single s1 = Single.getInstance();
  System.out.println(s1);
  
  Single s2 = Single.getInstance();
  System.out.println(s2);
  
  System.out.println(s1.x);
  System.out.println(s2.x);
  
  s1.x = 200;
  System.out.println(s1.x);
  System.out.println(s2.x);
 }
}

 

동일한 메모리 주소

100

100

200

200

객체는 처음 한번만 new로 생성이 된다.

그 다음 객체들은 처음 생성된 객체의 참조자를 따라 간다.

그래서, 두번 세번 객체를 만들고 값을 변경해도 그 이전의 객체들의 값도 모두 변경이 된다.

다른 패키지 및 파일에서도 동일하게 변경 된다.

C++의 개념과 살짝 다르다.

사용예가 DB커넥션 데이터들의 동기화시에 사용하면 편리하다.

여러개 만들어 두고 동일한 값을 사용 해야 할 경우 !