Design Pattern - J4mbo/labs GitHub Wiki

what is Design-pattern?

λ””μžμΈ νŒ¨ν„΄μ€ 자주 μ‚¬μš©ν•˜λŠ” 섀계 ν˜•νƒœλ₯Ό μ •ν˜•ν™”ν•΄μ„œ 이λ₯Ό μœ ν˜•λ³„λ‘œ 섀계 ν…œν”Œλ¦Ώμ„ λ§Œλ“€μ–΄λ‘” 것을 λ§ν•œλ‹€. λ””μžμΈ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ νš¨μœ¨μ„±κ³Ό μž¬μ‚¬μš©μ„±μ„ 높일 수 μžˆλ‹€.

λ””μžμΈ νŒ¨ν„΄μ€ μ•Œκ³ λ¦¬μ¦˜μ²˜λŸΌ ν”„λ‘œκ·Έλž¨ μ½”λ“œλ‘œ λ³€ν™˜ν•˜μ—¬ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 것은 μ•„λ‹ˆμ§€λ§Œ μœ μ‚¬ν•œ μƒν™©μ—μ„œ ꡬ쑰적인 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ” λ°©μ•ˆμ„ μ œμ‹œν•΄μ€€λ‹€. κ²°κ΅­ λ””μžμΈ νŒ¨ν„΄μ€ λ§Žμ€ κ°œλ°œμžλ“€μ΄ κ²½ν—˜μœΌλ‘œ μ²΄λ“ν•œ 섀계 지식을 κ²€μ¦ν•˜κ³  이λ₯Ό μΆ”μƒν™”ν•˜μ—¬ μΌλ°˜ν™”ν•œ ν…œν”Œλ¦Ώμ΄λΌ ν•˜κ² λ‹€. [넀이버 지식백과] λ””μžμΈ νŒ¨ν„΄μ˜ 이해 (μ‰½κ²Œ λ°°μš°λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 곡학, 2015. 11. 30., ν•œλΉ›μ•„μΉ΄λ°λ―Έ(μ£Ό))

GoF Design-pattern

  • 에릭 감마(Erich Gamma), λ¦¬μ²˜λ“œ 헬름(Richard Helm), λž„ν”„ 쑴슨(Ralph Johnson), μ‘΄ λΈ”λ¦¬μ‹œλ°μŠ€(John Vlissides)κ°€ μ œμ•ˆν•œ GoF(Gang of Four)의 λ””μžμΈ νŒ¨ν„΄
  • λͺ©μ μ— 따라 생성, ꡬ쑰, λ™μž‘(ν–‰μœ„) νŒ¨ν„΄μœΌλ‘œ λ‚˜λ‰œλ‹€.

생성 νŒ¨ν„΄

객체λ₯Ό μƒμ„±ν•˜λŠ” 것과 κ΄€λ ¨λœ νŒ¨ν„΄.

  • singleton
  • prototype
  • builder
  • factory method
  • abstraction factory

ꡬ쑰 νŒ¨ν„΄

ν”„λ‘œκ·Έλž¨ λ‚΄μ˜ μžλ£Œκ΅¬μ‘°λ‚˜ μΈν„°νŽ˜μ΄μŠ€ ꡬ쑰 λ“± ν”„λ‘œκ·Έλž¨μ˜ ꡬ쑰λ₯Ό μ„€κ³„ν•˜λŠ” 데 많이 ν™œμš©λ  수 μžˆλŠ” νŒ¨ν„΄. λ³΅μž‘ν•œ ν˜•νƒœμ˜ ꡬ쑰λ₯Ό κ°–λŠ” μ‹œμŠ€ν…œμ„ κ°œλ°œν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” νŒ¨ν„΄μ΄ λ°”λ‘œ ꡬ쑰 νŒ¨ν„΄μ΄λ‹€. λ”°λΌμ„œ ꡬ쑰 νŒ¨ν„΄μ„ μ΄μš©ν•˜λ©΄ μƒˆλ‘œμš΄ κΈ°λŠ₯을 가진 볡합 객체λ₯Ό 효과적으둜 μž‘μ„±ν•  수 μžˆλ‹€.

  • adapter
  • composite
  • bridge
  • decorator
  • facade
  • flyweight
  • proxy

λ™μž‘(ν–‰μœ„) νŒ¨ν„΄

반볡적으둜 μ‚¬μš©λ˜λŠ” κ°μ²΄λ“€μ˜ μƒν˜Έμž‘μš©μ„ νŒ¨ν„΄ν™”ν•œ κ²ƒμœΌλ‘œ, ν΄λž˜μŠ€λ‚˜ 객체듀이 μƒν˜Έμž‘μš©ν•˜λŠ” 방법과 μ±…μž„μ„ λΆ„μ‚°ν•˜λŠ” 방법을 μ •μ˜. ν–‰μœ„ νŒ¨ν„΄μ€ μ—¬λŸ¬ 가지 ν–‰μœ„ κ΄€λ ¨ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ—¬ λ…λ¦½μ μœΌλ‘œ 일을 μ²˜λ¦¬ν•˜κ³ μž ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 즉 ν–‰μœ„ νŒ¨ν„΄μ€ λ©”μ‹œμ§€ κ΅ν™˜κ³Ό κ΄€λ ¨λœ κ²ƒμœΌλ‘œ, 객체듀 κ°„μ˜ ν–‰μœ„λ‚˜ μ•Œκ³ λ¦¬μ¦˜ λ“±κ³Ό κ΄€λ ¨λœ νŒ¨ν„΄μ„ λ§ν•œλ‹€.

  • template method
  • interpreter
  • iterator
  • observer
  • strategy
  • visitor
  • chain of responsibility
  • command
  • mediator
  • state
  • memento