Decorator Pattern

λ°μ½”λ ˆμ΄ν„° νŒ¨ν„΄μ΄λž€,

주어진 상황 및 μš©λ„μ— 따라 μ–΄λ–€ 객체에 μ±…μž„μ„ λ§λΆ™μ΄λŠ” νŒ¨ν„΄μœΌλ‘œ, κΈ°λŠ₯ ν™•μž₯이 ν•„μš”ν•  λ•Œ μ„œλΈŒν΄λž˜μ‹± λŒ€μ‹  μ“Έ 수 μžˆλŠ” μœ μ—°ν•œ λŒ€μ•ˆμ΄ 될 수 μžˆλ‹€.

- μœ„ν‚€λ°±κ³Ό

μ•žμ„œλ³΄κΈ°

μ΄λ¦„λŒ€λ‘œ 주변에 κΈ°λŠ₯을 λ§λΆ™μ—¬μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ„€κ³„λœ νŒ¨ν„΄μ΄λ‹€.

μ‹€μ œλ‘œ μ‚¬μš©λ˜λŠ” μ‚¬λ‘€λ‘œλŠ” 파이썬의 decoratorκ°€ μžˆλ‹€.

ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ κ²½κ³  둜그λ₯Ό λ‚¨κΈ°λŠ” warning μ΄λΌλŠ” λ°μ½”λ ˆμ΄ν„°κ°€ μžˆλ‹€κ³  치자. 그럼 νŒŒμ΄μ¬μ—μ„œλŠ” μ•„λž˜μ²˜λŸΌ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ‹€.

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

이제 myFunction() ν•¨μˆ˜λŠ” λ°μ½”λ ˆμ΄ν„°μ™€ ν•¨κ»˜ λ™μž‘ν•œλ‹€. (λ¬Όλ‘  파이썬의 문법에 μ˜ν•΄ κ°€λŠ₯ν•œ 것이닀. λͺ¨μ–‘μƒˆλ§Œ μ•Œκ³  κ°€μž.)

λ°μ½”λ ˆμ΄ν„°κ°€ ν•¨μˆ˜ μ‹€ν–‰ μ „κ³Ό 후에 둜그λ₯Ό 남기도둝 λ§Œλ“€μ–΄μ‘Œλ‹€λ©΄, κ²°κ³ΌλŠ” μ•„λž˜μ™€ 같을 수 μžˆλ‹€.

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

이런 방식은 μ–΄λ–€ κΈ°λŠ₯(λ©”μ†Œλ“œ)을 μΆ”κ°€ν•˜κΈ° μœ„ν•΄μ„œ 클래슀λ₯Ό 상속받을 ν•„μš”λ„ μ—†κ³ , μƒˆλ‘œ 생성할 ν•„μš”λ„ μ—†λ‹€.

Last updated