Flyweight Pattern

Flyweight Pattern (ํ”Œ๋ผ์ด์›จ์ดํŠธ ํŒจํ„ด)

Flyweight-Pattern

๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํŠน์ • ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์•„์ฃผ ๋งŽ์€ ๊ฐ์ฒด๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ฐ์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ์ €์žฅ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์ปค์งˆ ๊ฒƒ์ด๋‹ค.

(๊ฒŒ์ž„์˜ ์บ๋ฆญํ„ฐ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์žฅ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์˜ˆ์‹œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ „์‚ฌ, ๊ถ์ˆ˜, ๋งˆ๋ฒ•์‚ฌ ๊ฐ์ฒด๋Š” ํ•ด๋‹น ์ง์—…์˜ ์บ๋ฆญํ„ฐ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ณ ์ž ํ•  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.)

์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฐ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ ์ž ๊ฐ์ฒด๋งˆ๋‹ค ๊ฐ€์ ธ์•ผ ํ•  ๋ฐ์ดํ„ฐ(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์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

Last updated