Skip to content

Latest commit

ย 

History

History
60 lines (41 loc) ยท 3.09 KB

FlyweightPattern-junha.md

File metadata and controls

60 lines (41 loc) ยท 3.09 KB

[๊ตฌ์กฐ ํŒจํ„ด] Flyweight Pattern


Flyweight Pattern ์ด๋ž€?

  • ๋™์ผ๊ฑฐ๋‚˜ ์œ ์‚ฌํ•œ ๊ฐ์ฒด๋“ค ์‚ฌ์ด์— ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋กœ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ ˆ์•ฝํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด

Flyweight Pattern ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

  • ์—ฌ๋Ÿฌ ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋‹ค๊ณ  ํ•  ๋•Œ, ์บ๋ฆญํ„ฐ ๋งˆ๋‹ค ๋ชจ๋“  ํŠน์ง•? ์„ ๊ฐ์ฒด๋กœ ๋งŒ๋“ ๋‹ค๊ณ  ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Flyweight Pattern์„ ์‚ฌ์šฉํ•˜๋ฉด ์บ๋ฆญํ„ฐ๋งˆ๋‹ค ๊ณตํ†ต๋œ ์†์„ฑ์€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐœ๋ณ„์ ์ธ ์†์„ฑ๋งŒ ๋ณ„๋กœ๋“ธ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด ๊ฐ์ฒด ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flyweight Pattern์€ ์–ด๋–ค ๊ฒฝ์šฐ ์‚ฌ์šฉํ• ๊นŒ?

  • ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์ด ๋†’์€ ์ƒํ™ฉ์—์„œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ์‹œ์ ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์ด ๋†’๋‹ค๋Š” ๋œป์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ž์›, ์‹œ๊ฐ„, ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค๋Š” ๋œป ์ž…๋‹ˆ๋‹ค.
  • Flyweight Pattern์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์„ ์ค„์ด๊ณ , ๊ฐ์ฒด์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค๋Š” ๋œป ์ž…๋‹ˆ๋‹ค.

Flyweight Pattern์˜ ์žฅ๋‹จ์ 

  • ์žฅ์ 
    • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
      • Flyweight ๊ฐ์ฒด๋Š” ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์„œ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
    • ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์„ ์ค„์ž…๋‹ˆ๋‹ค.
    • ๊ฐ์ฒด์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
    • ์œ ์—ฐ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
      • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์บก์Šํ™”ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  • ๋‹จ์ 
    • ๊ณต์œ  ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ์—๋Š” ์ฃผ์˜ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๊ฐ์ฒด์—์„œ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์ด๋ค„์ง€๋ฉด ๋ชจ๋“  ๊ฐ์ฒด์˜ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
    • Flyweight ๊ฐ์ฒด๋“ค์€ ๊ณต์œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ถ„์ด ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

swift์— Flyweight Pattern์ด ์ ํ•ฉํ•œ๊ฐ€?

  • swift๋„ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์ด๋ฏ€๋กœ, Flyweight๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค๋Š” Flyweight ๊ฐ์ฒด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
    • ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ๊ฐ’์ด ๋ณต์‚ฌ๋˜๋ฏ€๋กœ ๊ฐ’์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • Flyweight ํŒจํ„ด์„ ๊ตฌํ˜„ํ•  ๋–„๋Š” class๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.

Flyweight Pattern ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

  1. Flyweight ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒฉํ† ๋ฆฌ ํด๋ž˜์Šค ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ณต์œ ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์บก์Šํ™”ํ•˜๋Š” Flyweight ๊ฐ์ฒด๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. Flyweight ํŒฐํ† ๋ฆฌ์— ์ด๋ฏธ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๊ณ  ๋งŽ์•˜์Šต๋‹ˆ๋‹ค!!

์•„๋ž˜๋Š” ์ฝ”๋“œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
์ด๋™ ํ•˜๊ธฐ