[디자인 패턴] 플라이웨잇 패턴
플라이웨잇(flyweight) 패턴은 다른 패턴들과는 다르게, 성능의 최적화를 꾀하는 패턴 중 하나다.
만약 2D 그래픽 화면을 표현할 때, 여러개의 나무를 표현해야 한다고 치자.
일반적으로 생각하면 그냥 나무의 표현 정보들을 저장하는 나무 객체들을 여러개 생성해서 저장할 것이다.
질감을 표현할 텍스쳐나... 기본 모양... 그리고 좌표값들...
근데 나무 객체가 100개가 되고 200개가 된다면, 메모리를 끝도 없이 잡아먹을 수도 있을 것이다.
플라이웨잇 패턴은 이를 해결하기 위한 패턴으로, 각 객체들 간에 공유가 가능한 부분은, 하나만 만들고 공유한다.
가령 위에 예시로 든 텍스쳐나 기본 모양 등은 하나로 통일할 수 있을 것이다. 그럴 경우엔 하나만 만들어서 공유한다. 이외에 달라야 하는 좌표값 등만 따로 관리한다.
플라이웨잇 패턴은 언제, 어떻게 사용하는지에 따라서 세부 구조가 많이 달라지는 편이다.
컴포지트 패턴에 응용될 수도, State, Strategy, Factory Method 패턴 등과 사용될 수도 있다.
참조
헤드퍼스트 디자인 패턴
GoF 디자인 패턴
https://m.blog.naver.com/2feelus/220669069127