오늘은 싱글톤에 대해서 알아보겠다.
싱글톤이란 ? 객체를 하나만 생성하는것
즉, 여러객체를 만들어도 객체 하나로 통일하여 쓴다는것이다.
MySingletonTest.java
public class MySingletonTest {
public static void main(String[] args) {
MySingleTon a = MySingleTon.getInstance();
MySingleTon a2 = MySingleTon.getInstance();
System.out.println(a==a2);
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(a2));
}
}
MySingleTon.java
public class MySingleTon {
private static MySingleTon single;
private MySingleTon(){
}
public static MySingleTon getInstance() {
if(single == null)
single = new MySingleTon();
return single;
}
}
위에서 보면 알 수 있듯이 main에서 a와 a2를 만들었다. 여기서 생성자를 받지 않고 바로 getInstance()를 호출하였다. 그럼 getInstance()를 들여다보자 single이 null이면 Default생성자를 호출하였다. 하지만 null이 아닐경우엔 그냥 single을 반환한다. 이를 해석하면 처음 null경우에만 생성자를 호출하고 그다음부턴 null이 되기 전까진 생성자를 호출하지 않는다는 것이다.
어.. 그래서 일단 결과로 주소가 같은지, identityHashcode를 찍어보면
같은걸 볼 수 있다!