public class SingleTonClass {
private int i=10;
private static SingleTonClass SINGLE_TON_CLASS = new SingleTonClass();
private SingleTonClass() {
// TODO Auto-generated constructor stub
}
public static SingleTonClass getSingleTonClass() {
return SINGLE_TON_CLASS;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
위 코드를 보면 또한 SINGLE_TON_CLASS 라는 변수를 선언한다.
SINGLE_TON_CLASS은 static변수로써 메모리 영역에 올림으로써 앞에 접근 지정자가public 이면 직접 사용할 수 있다.
하지만 접근지정자가 pivate 이기 때문에 다른클레스에서 직접 사용하지 못한다.
또한 다른 클래스에서 생성자를 이용하여 객체를 사용하고 싶어도 생성자또한 private 로 선언되어있어 사용하지 못한다.
결국에는 getSingleTonClass() 메서드를 통해서만 해당 인스턴스를 얻을 수 있게 된다
이러한 싱글톤 패턴의 장점은 객체가 단 한번만 생성되기 때문에 재사용가 메모리 낭비를 줄일 수있고
전역성을 가지게 된다.
예제1)
public class FirstClass {
public FirstClass() {
SingleTonClass sin = SingleTonClass.getSingleTonClass();
System.out.println(sin.getI());
sin.setI(200);
}
예제2)
public class SecondClass {
public SecondClass() {
SingleTonClass single = SingleTonClass.getSingleTonClass();
System.out.println(single.getI());
}
}
메인클래스
public class MainClass {
public static void main(String[] args) {
FirstClass fc = new FirstClass();
SecondClass sc = new SecondClass();
}
}
결과:
10
200
'Java' 카테고리의 다른 글
[Java]equals , hashCode 사용하기 (0) | 2020.11.25 |
---|---|
[Java]reflection 을 이용한 간단한 DI 프레임워크 만들기 (1) | 2020.08.17 |
[Java]비정방형 배열 (0) | 2020.05.12 |
is a , has a (0) | 2020.01.28 |
생성자 (0) | 2020.01.27 |