πŸ“”
Today Joonas Learned
  • Home
  • About Me
  • Chrome Extension
    • CSS injection
  • Design Pattern
    • SOLID 원칙
      • 1. SRP
      • 2. OCP
      • 3. LSP
      • 4. ISP
      • 5. DIP
    • 생성 νŒ¨ν„΄
      • Singleton Pattern
      • Abstract Factory Pattern
      • Factory Method Pattern
    • ꡬ쑰 νŒ¨ν„΄
      • Adapter Pattern
      • Bridge Pattern
      • Composite Pattern
      • Decorator Pattern
      • Facade Pattern
      • Proxy Pattern
    • ν–‰μœ„ νŒ¨ν„΄
      • Command Pattern
      • Observer Pattern
      • State Pattern
      • Strategy Pattern
      • Template Method Pattern
  • Graphics
    • OpenGL ES
      • νŒŒμ΄ν”„λΌμΈ
      • μ‚Όκ°ν˜• 그리기
      • μ‚Όκ°ν˜• 움직이기
      • λ‹€κ°ν˜• 그리기
      • 정사면체 그리기
      • [WIP] λ§ˆμΈν¬λž˜ν”„νŠΈ λΈ”λŸ­ λ§Œλ“€κΈ°
      • [WIP] Lighting, Normal Mapping
  • Internet
    • iOS/Safari
  • Javascript
    • async, defer 속성
    • λ‚˜λ¨Έμ§€ λ§€κ°œλ³€μˆ˜ (Rest parameter)
    • ν™”μ‚΄ν‘œ ν•¨μˆ˜ ν‘œν˜„ (arrow function expression)
    • Template Literals
    • TDZ (Temporal Dead Zone)
    • Spread syntax (...)
  • Network
    • OSI 7 계측 λͺ¨λΈ
  • Uncategorized
    • 2021/12/07
    • 2020/09/03
    • 2020/09/04
    • 2020/08/22
  • git/VCS
    • Merge 컀밋 λ©”μ‹œμ§€ μˆ˜μ •
Powered by GitBook
On this page

Was this helpful?

  1. Design Pattern
  2. ꡬ쑰 νŒ¨ν„΄

Decorator Pattern

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

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

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

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

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

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

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

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

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

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

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

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

PreviousComposite PatternNextFacade Pattern

Last updated 4 years ago

Was this helpful?