Decorator Pattern

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

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

- ์œ„ํ‚ค๋ฐฑ๊ณผ

์•ž์„œ๋ณด๊ธฐ

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

์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ๋ก€๋กœ๋Š” ํŒŒ์ด์ฌ์˜ decorator๊ฐ€ ์žˆ๋‹ค.

ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒฝ๊ณ  ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋Š” warning ์ด๋ผ๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ์น˜์ž. ๊ทธ๋Ÿผ ํŒŒ์ด์ฌ์—์„œ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

@warning
def myFunction():
    print('my function')

์ด์ œ myFunction() ํ•จ์ˆ˜๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•œ๋‹ค. (๋ฌผ๋ก  ํŒŒ์ด์ฌ์˜ ๋ฌธ๋ฒ•์— ์˜ํ•ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค. ๋ชจ์–‘์ƒˆ๋งŒ ์•Œ๊ณ  ๊ฐ€์ž.)

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๊ฐ€ ํ•จ์ˆ˜ ์‹คํ–‰ ์ „๊ณผ ํ›„์— ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค๋ฉด, ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค.

warning: function 'myFunction()' called
my function
warning: function 'myFunction()' finished

์ด๋Ÿฐ ๋ฐฉ์‹์€ ์–ด๋–ค ๊ธฐ๋Šฅ(๋ฉ”์†Œ๋“œ)์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์„ ํ•„์š”๋„ ์—†๊ณ , ์ƒˆ๋กœ ์ƒ์„ฑํ•  ํ•„์š”๋„ ์—†๋‹ค.

Last updated