Last updated
Last updated
๊ฐ๋ฐํ๋ ค๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํน์ ํด๋์ค์ ๋ํด ์์ฃผ ๋ง์ ๊ฐ์ฒด๋ฅผ ํ์๋ก ํ๋ค๊ณ ๊ฐ์ ํ์. ๊ฐ์ฒด์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ์ปค์ง์๋ก ์ ์ฅ ๊ณต๊ฐ์ ๋ํ ๋ถ๋ด์ด ์ปค์ง ๊ฒ์ด๋ค.
(๊ฒ์์ ์บ๋ฆญํฐ ๊ฐ์ฒด๊ฐ ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ฌ์ด ์์๊ฐ ๋ ์ ์๋ค. ์ ์ฌ, ๊ถ์, ๋ง๋ฒ์ฌ ๊ฐ์ฒด๋ ํด๋น ์ง์ ์ ์บ๋ฆญํฐ ํ๋๋ฅผ ๋ง๋ค๊ณ ์ ํ ๋๋ง๋ค ์์ฑ๋์ด์ผ ํ๋ค.)
์์ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ์ฒด์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ ๊ฐ์ฒด๋ง๋ค ๊ฐ์ ธ์ผ ํ ๋ฐ์ดํฐ(Extrinsic Data)
์ ๊ฐ์ฒด ๊ฐ์ ๊ณต์ ๋๋ ๋ฐ์ดํฐ(Intrinsic Data)
๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ด๋ฆฌํ๋๋ก ํ๋ ํจํด์ด ๋ฐ๋ก ํ๋ผ์ด์จ์ดํธ ํจํด์ด๋ค.
Client
- ๊ณต์ ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ฑฐ๋ Flyweight์๊ฒ ์ ๋ฌํ๋ค.
FlyweightFactory
- Flyweight ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ณต์ ํ๋ค.
Flyweight
- ๊ณต์ ์ ์ฌ์ฉํ ํด๋์ค๋ค์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธ
ConcreteFlyweight
- ๊ณต์ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ค์ ํด๋นํ๋ค.
UnsharedConcreteFlyweight
- ๊ณต์ ํ ์ ์์ง๋ง ๊ณต์ ๊ฐ์ฒด๋ค๊ณผ ํจ๊ป ์ทจ๊ธ๋๋ ๊ฐ์ฒด๋ค์ ํด๋นํ๋ค.
SRP๋ฅผ ์๋ฐฐํ๋ค. SRP๋ฅผ ๋ง์กฑํ๊ธฐ ์ํด์๋ Intrinsic, Extrinsic Data๊ฐ ํ ํด๋์ค์ ์กด์ฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ SRP๋ฅผ ์๋ฐฐํ๋๋งํผ ์ป๋ ์ด์ต(๊ฐ์๋๋ ํ์ ์์์ ์)์ด ํด ๋๋ง ์ฌ์ฉํด์ผ ํ๋ค.
Factory Pattern
- flyweight ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด Factory Pattern์ ์ด์ฉํ๋ค.
Singleton Pattern
- Factory๋ ํ๋๋ง ์กด์ฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์, Factory๋ฅผ Singleton์ผ๋ก ์์ฑํ๋ค.