C#/GoF 디자인패턴

[GoF]11.플라이급 패턴(Flyweight Pattern)

공부를하자 2023. 10. 21. 13:35

1.정의

-플라이급 패턴은 개체의 멤버 필드 중에 각 개체가 반드시 갖고 있어야 할 멤버와 여러 개체가 공유해서 사용할 수 있는 멤버로 분리하고 공유해서 사용할 수 있는 멤버가 가질 수 있는 상태의 종류가 개체의 수보다 상대적으로 적다면 메모리 효율을 높일 있는 패턴.

- 공유해서 사용할 수 있는 상태들을 공유 풀에 형성하고 각 개체는 특정 상태를 참조한다.

2.시나리오

-아들은 사진을 찍고 편집하는 것을 즐기는 와중에 영상처리 관련 프로그램을 만드는 것에

관심을 가지게 되었다.

-사진을 찍을 어떤 렌즈,바디,조명을 사용했는지에 따라 사진을 분류하는 프로그램을 만들려고 한다.

-그러는 와중에  사진이 개수가 많아짐에 따라  너무 많은 메모리를 차지해서 문제 생겼다.

3.다이어그램

-PictureFile 클래스는 사진 파일 클래스로  사진 찍을 Body, 렌즈, 조명의 속성을 갖는다.

-Meta 클래스는 사진들의 정보를 가진다.

-MetaPool 클래스는 Meta 객체들을 관리하는 객체를 만들고 요청에 따라 맞는 Meta객체의 정보를 제공하낟.

4.구현

 1)Meta 클래스

 

 

2)MetaPool 클래스

3)PictureFile 클래스

4)테스트