Flyweight 패턴은 동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유하여 사용하도록 하여 메모리 사용량을 최소화하는 패턴입니다.
구조
- Flyweight
- 공유에 사용할 클래스들의 인터페이스를 선언합니다.
- ConcreteFlyweight
- Flyweight의 내용을 정의하며, 실제로 공유될 객체입니다.
- FlyweightFactory
- 해당 클래스를 통해서 Flyweight의 인스턴스를 생성 또는 공유합니다.
- Client
- FlyweightFactory로 생성한 인스턴스를 사용합니다.
활용 상황
- 어플리케이션에 의해 생성되는 객체의 수가 많을때 유용합니다.
- 생성된 객체가 오래도록 메모리에 상주하며, 사용되는 횟수가 많을때 유용합니다.
- 생성될 객체의 외적 특성이 클라이언트 프로그램으로부터 정의되어야 할때 유용합니다.
Flyweight 패턴의 장단점
- 장점
- 많은 객체를 생성할때 성능을 향상시킬 수 있습니다.
- 많은 객체를 생성할때 메모리를 줄일 수 있습니다.
- 단점
- 특정 인스턴스의 공유 컴포넌트를 다르게 행동하게 하는 것이 불가능합니다. 공통된 자원이기 때문에 공통된 부분을 싱글톤처럼 사용하고, 서로 다른 일부 객체는 다르게 사용해야 합니다.
'디자인 패턴 > 구조 패턴' 카테고리의 다른 글
Facade 패턴 (0) | 2021.10.05 |
---|---|
Bridge 패턴 (0) | 2021.10.02 |
Adapter 패턴 (0) | 2021.09.11 |
Decorator 패턴 (0) | 2021.09.07 |
Proxy 패턴 (0) | 2021.09.05 |