Flyweight

디자인패턴

목록 보기
3/12

: 메모리 사용량을 줄이기 위해(=경량화) 인스턴스를 공유하는 패턴

  • Keyword : Map, 객체 캐시, 재사용, 참조값 반환

✅ 구현

  • 보통 해당 인스턴스의 생성여부를 확인하기 위해 Map 또는 배열 사용
  • Singleton과 관련
  • 원래 인스턴스 생성이라면 아래 코드 처럼 진행. 즉 '내'가 직접 만들어서 사용.
Integer i = new Integer(1);
  • Flyweight 패턴으로는 중간에 있는 'Factory Method'가 만들어줘서 그걸 '내'가 사용하는 것.
Integer i = Integer.valueOf(1);


✅ intrinsic, extrinsic

  • 공유하는 정보(intrinsic): 어떤 상황에서도 변하지 않는, 상태에 의존하지 않는 정보
  • 공유하지 않는 정보(extrinsic): 인스턴스 배치 장소에 따라 변경되는 정보, 상황에 따라 변하는 정보, 상태에 의존하는 정보.

✅ static Factory Method

ex) getInstance: 유일한 인스턴스를 얻기 위한(Singleton) 것.
ex) String.valueOf


✅ 싱글톤과 차이

  • Singleton: 하나의 인스턴스
  • Flyweight: 여러 개의 인스턴스(단, 최소화하려는 것이 keypoint. 동일한 속성의 인스턴스를 공유한다는 것.) for 메모리 절약
profile
정리하는게 공부가 될 지 모르겠지만, 정리를 하면 마음만큼은 편해

0개의 댓글