Skip to content

Latest commit

ย 

History

History
49 lines (35 loc) ยท 2.59 KB

DecoratorPattern-junha.md

File metadata and controls

49 lines (35 loc) ยท 2.59 KB

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

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์ด๋ž€?

์ฃผ์–ด์ง„ ์ƒํ™ฉ ๋ฐ ์šฉ๋„์— ๋”ฐ๋ผ ์–ด๋–ค ๊ฐ์ฒด์— ์ฑ…์ž„์„ ๋ง๋ถ™์ด๋Š” ํŒจํ„ด์œผ๋กœ ๊ธฐ๋Šฅ ํ™•์žฅ์ด ํ•„์š”ํ•  ๋•Œ ์„œ๋ธŒํด๋ž˜์‹ฑ ๋Œ€์‹  ์“ธ ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๊ธฐ์กด ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ๋™์ž‘๋“ค์„ ํฌํ•จํ•˜๋Š” ํŠน์ˆ˜ ๋ž˜ํผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.


Decorator pattern์— ๋‹ค๋ฅธ ์ด๋ฆ„?

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์€ ์ž๊ธฐ์ž์‹ ์„ ๋‹ค์‹œ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ ๊ฐ์‹ธ๋ฉด์„œ ํฐ ๋ธ”๋ก์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฒƒ์ด ํŠน์ง•์ด ๋นˆ๋‹ค. ์ž‘์€ ๋ธ”๋ก์„ ๋‹ค์‹œ ์ž‘์€ ๋ธ”๋ก์œผ๋กœ ๊ฐ์‹ธ๋Š” ํŠน์ง• ๋•Œ๋ฌธ์— Wrapper pattern์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž‘์€ ๋ธ”๋ก์œผ๋กœ ์ ์  ํฐ ๋ธ”๋ก์œผ๋กœ ์Œ“๋Š”๋‹ค๋Š” ๋‹ค๋Š” ํŠน์ง• ๋•Œ๋ฌธ์— Structural pattern ํŒจํ„ด์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.


์ฃผ๋กœ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์€ ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

  • ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๊ฐœ๋ณ„ ๊ฐ์ฒด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋–„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€ํ•œ ๊ธฐ๋Šฅ์„ ์—†์•จ ๋–„๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์†์„ ์‚ฌ์šฉํ•ด์„œ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ~

https://refactoring.guru/ko/design-patterns/decorator๋‹˜์ด ์„ค๋ช…์ด ๋” ์ž˜๋˜์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋ถ„์€ ์˜ท์„ ์ž…๋Š” ๊ฒƒ์„ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

"๋‹น์‹ ์„ ์ถ”์„ ๋•Œ ์Šค์›จํ„ฐ๋กœ ๋ชธ์„ ๊ฐ์Œ‰๋‹ˆ๋‹ค. ์Šค์›จํ„ฐ๋ฅผ ์ž…์–ด๋„ ์ถฅ๋‹ค๋ฉด ์žฌํ‚ท์„ ์ž…๊ณ , ๋˜ ๋น„๊ฐ€ ์˜ค๋ฉด ๋น„์˜ท์„ ์ž…์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์˜ท์€ ๊ธฐ์ดˆ ํ–‰๋™์„ ํ™•์žฅํ•˜์ง€๋งŒ, ๋‹น์‹ ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์˜ท์„ ์‰ฝ๊ฒŒ ๋ฒ—์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" (์„ค๋ช…์ด ๋„ˆ๋ฌด ์ฐฐ๋–ก๊ฐ™๋„ค์š”....)
๋งŒ์•ฝ ์œ„ ์˜ˆ์ œ๊ฐ€ ์ดํ•ด๊ฐ€ ์ž˜์•ˆ๋˜๋ฉด ์ฝ”์œผํ•œ๋ฒˆ ๋ณด์‹œ๋ฉด ๋ฐ”๋กœ ์ดํ•ด๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์˜ ์žฅ๋‹จ์ 

์žฅ์ 

  • ์ƒ์†์„ ํ†ตํ•œ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ฐ์ฒด์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ๋ž˜ํ•‘ ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋™์ž‘์„ ํ•ฉ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋Ÿฐํƒ€์ž„์—์„œ ๊ฐ์ฒด์— ์ฑ…์ž„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ž˜ํผ ์Šคํƒ์—์„œ ํŠน์ • ๋ž˜ํผ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๊ธฐ๋Šฅ์ด ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์Šคํƒ ์ˆœ์„œ์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด ์ฝ”๋“œ ์˜ˆ์ œ

Decorator Pattern ์˜ˆ์ œ์ฝ”๋“œ

์˜ค๋Š˜๋„ ์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค.