public class SingletonClass {
private static SingletonClass SINGLETON_CLASS_INSTANCE = new SingletonClass();
public int i = 10;
// 생성자도 private 로 만들어서 어디서 객체를 만들어서 쓸 수 없게 한다.
private SingletonClass() {
}
// 객체가 생성되기전 static(클래스 영역)에서 생성해서 밑에 new SingletonClass() 로 객체를 만들어서 쓸 수 있게 한다.
public static SingletonClass getSingletonClass() {
if(SINGLETON_CLASS_INSTANCE == null) {
SINGLETON_CLASS_INSTANCE = new SingletonClass(); // SINGLETON_CLASS_INSTANCE 값이 널이면 객체를 생성해준다.
}
return SINGLETON_CLASS_INSTANCE; //SingletonClass 타입의 객체를 반환 해준다.
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
// 다른 클래스에서 싱글톤을 이런식으로 호출해서 쓴다.
public class FirstClass {
public FirstClass() {
SingletonClass singletonClass = SingletonClass.getSingletonClass();
System.out.println("FirstClass");
System.out.println("i = " + singletonClass.getI());
singletonClass.setI(200);
System.out.println("i = " + singletonClass.getI());
}
}
어떤 클래스에서 싱글톤을 호출 해서 쓰든 같은 주소값을 가지고 있다.
싱글톤은 딱 한번만 생성돼서 어디서든 공유해서 사용된다.
'자바기초' 카테고리의 다른 글
컬렉션 (0) | 2021.09.24 |
---|---|
StringBuffer (0) | 2021.09.23 |
super 키워드와 오버라이드 장점과 단점 (0) | 2021.09.19 |
static 키워드 (0) | 2021.09.19 |
기본 자료형과 객체 자료형 (0) | 2021.09.18 |