디자인 패턴/구조 패턴

Flyweight 패턴

언린이 2021. 10. 9. 18:34

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