홀더 패턴이라는 것을 처음 이용해보았다. 거의 받아쓰기 하듯이 짝코딩을 했는데, 하고 나서 찬찬히 보고 문서를 살펴보니 좀 이해할 수 있게 되었다. 그리고 이건 좋지 않다. 키보드를 치면 화면이 너무 많이 흔들린다.
홀더 패턴이라고 검색하면 잘 나오지 않고, Initialization on demand holder idion이라고 정의되어 있는 것 같다.
간단히 훑어봤을 때 장점은 lazy loading이다. 형식은 아래 문서들을 참고하면 쉽게 이해할 수 있다. A클래스에 대한 getInstance()함수를 수행하면 A클래스의 싱글톤 객체를 리턴한다. 그렇지만 내부를 살펴보면 A클래스의 Inner class인 B클래스의 필드를 리턴하는 것으로부터 A클래스의 싱글톤 객체를 가져다 쓸 수 있게 되는 것이다.
정리하자면
public class A {
public A getInstance (){ return B._instance();}
private static class B{
private A _instance = new A();
}
}
- 검색해서 이해하기 좋았던 문서 2개
1. http://gampol.tistory.com/entry/Double-checked-locking%EA%B3%BC-Singleton-%ED%8C%A8%ED%84%B4
2. https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
'배운 것' 카테고리의 다른 글
base64 vs base64url safe 차이 (2) | 2016.04.03 |
---|---|
perl로 날짜 비교 하기 (0) | 2016.03.28 |
[linux command ] which, whereis (0) | 2016.03.04 |
[linux command] mkdir -p -m (0) | 2016.03.04 |
[linux command] cut (0) | 2016.03.04 |