반응형
- 싱글톤 패턴
- 실글톤 패턴으로 만들어진 Class 는 여러번 생성(인스턴스 화) 하더라도 실제로는 한번만 생성된 Class 패턴을 의미한다.
code (싱글톤 패펀 Class)
public class TestSingleton {
private static TestSingleton instance;
private int value = 0;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
private TestSingleton () {
}
public static TestSingleton getInstance () {
if (instance == null) {
instance = new TestSingleton();
}
return instance;
}
}
-
생성자가 private 이기 때문에 외부에서 Class를 생성(인스턴스화) 할 수 없다. ( new TestSingleton() 불가능 )
-
getInstance() 메소드는 static 이기 때문에 Class 생성없이 접근이 가능한다. ( TestSingleton.getInstance )
getInstance() 메소드가 생성없이 접근할 수 있는 이유는 아래 쪽 Static관련 링크에서 확인 해보자
code
public class SingletonMain {
public static void main(String[] arg) {
TestSingleton ts1 = TestSingleton.getInstance();
TestSingleton ts2 = TestSingleton.getInstance();
// 0 0
System.out.println(ts1.getValue());
System.out.println(ts2.getValue());
// 1 1
ts1.setValue(1);
System.out.println(ts1.getValue());
System.out.println(ts2.getValue());
// 2 2
ts1.setValue(2);
System.out.println(ts1.getValue());
System.out.println(ts2.getValue());
System.out.println(ts1.hashCode());
System.out.println(ts2.hashCode());
Singoleton s1 = Singoleton.instance;
Singoleton s2 = Singoleton.instance;
System.out.println(s1.getA());
s1.setA(500);
System.out.println(s1.getA());
System.out.println(s2.getA());
}
}
ts1, ts2는 하나의 TestSingleton 인스턴트를 보고있다. 그렇게 때문에 둘중 어느 setValue() 메소드로 값을 바꾸더라도 같은 값을 보고있기 때문에 ts1, ts2의 getValue() 메소드 값으로 값을 확인하면 같은 것을 볼 수 있다.
반응형
'Tech > Java' 카테고리의 다른 글
Java Thread, Multi Thread (0) | 2020.06.04 |
---|---|
Java Annotation (어노테이션) (2) | 2020.06.03 |
Java 자료구조 - List, Set, Map (1) | 2020.05.30 |
Java 자료구조 - Queue (0) | 2020.05.25 |
Java 자료구조 - Stack (0) | 2020.05.25 |
댓글