[디자인 패턴] 홀더 패턴

[원본 링크]

홀더(holder) 패턴은, 팩토리 메소드 패턴과 싱글톤 패턴이 혼합된 형태의 변형 패턴 중 하나다.

홀더 클래스의 메소드는 팩토리 메소드처럼 어떤 인터페이스의 객체를 반환하지만.
팩토리메소드가 호출 시마다 새로운 객체를 생성해서 반환한 것과 다르게, 하나씩의 정적 객체만을 미리 생성해두고 반환한다.

객체를 하나씩만 잡아두고(hold) 있기 때문에 홀더인 것 같다.

코드를 보자.
일단 객체의 인터페이스와 구현 클래스들을 대강 만들어준다. image

image

그리고 이게 생성과 관리를 담당할 홀더 클래스다. image

image getFoo 메소드에선 들어온 플래그에 맞춰, 이미 생성해놓고 잡아(hold)놓은 객체를 반환한다.


그럼 이런식으로 사용할 수 있다. image

image 간단하다.

안드로이드 등에서 뷰홀더(view holder)라는 이름으로 자주 사용되는 것 같다.


참조
https://effectiveprogramming.tistory.com/m/entry/Holder-%ED%8C%A8%ED%84%B4