본문 바로가기

프로그래밍 강의 메모/코딩으로 학습하는 GoF의 디자인 패턴_백기선

구조 관련 디자인 패턴 > 플라이웨이트 패턴(Flyweight Pattern)

https://inf.run/6Shr

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com

 

 

플라이웨이트 패턴

  • 구조 관련 디자인 패턴.
  • 객체를 가볍게 만들어 메모리 사용을 줄이는 패턴.
  • 외적인 속성 즉 자주 변하는 속성과 내적인 속성 변하지 않는 속성을 분리하고 재사용하여 메모리 사용을 줄일 수 있다.

 

 



 



 

많은 인스턴스를 생성하는 프로그램의 경우 많은 메모리를 사용하게 된다.

메모리 낭비를 줄이기 위해 공통되는 부분을 따로 모아서 재사용하는 패턴이다.

 

잘 변하지 않는 속성을 따로 모아서 재사용한다.

Flyweight를 Client에서 FlyweightFactory를 통해서 가져와 사용한다.

한번 동일한 속성으로 만들어놓은 FlyweightFlyweightFactory에서 캐싱을 해주다가,

Client가 같은 속성을 요청할 때 동일한 Flyweight 인스턴스를 가져다가 쓸 수 있게 하는 패턴이다.

 

 

플라이웨이트 패턴의 장점

  • 애플리케이션에서 사용하는 메모리를 줄일 수 있다.
  • 예제에서는 맵 자료형인 캐시 변수에 추가하여 키값만 같다면 기존 인스턴스를 가져오는 방식으로 메모리를 절약하고 있다.

 

 

 

 

 

 

https://refactoring.guru/ko/design-patterns/flyweight

 

Flyweight

/ Design Patterns / Structural Patterns Flyweight Also known as: Cache Intent Flyweight is a structural design pattern that lets you fit more objects into the available amount of RAM by sharing common parts of state between multiple objects instead of keep

refactoring.guru