λ°˜μ‘ν˜•

λ””μžμΈ νŒ¨ν„΄(Design Pattern)??

λ””μžμΈ νŒ¨ν„΄μ΄λΌλŠ” 단어λ₯Ό λ“€μ–΄λ³΄μ…¨λ‚˜μš”? λ‹¨μ–΄λ§Œ 봀을 λ•Œμ—λŠ” λ””μžμΈ κ΄€λ €λœ λ„νŠΈ νŒ¨ν„΄ 같은 λŠλ‚Œμ΄ 듀지 μ•Šλ‚˜μš”? ν”„λ‘œκ·Έλž˜λ°μ—μ„œμ˜ λ””μžμΈ νŒ¨ν„΄μ΄λž€ ꡬ쑰 섀계에 κ΄€ν•œ μ–˜κΈ°μž…λ‹ˆλ‹€. λ¬Όλ‘ , ν”„λ‘œκ·Έλž˜λ° 언어에 상관 없이 λͺ¨λ‘ μ μš©λ˜λŠ” κ°œλ…μž…λ‹ˆλ‹€. λ””μžμΈ νŒ¨ν„΄μ˜ μ˜λ―ΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  λ•Œ 자주 λ°œμƒν•˜λŠ” 반볡적인 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ°©λ²•λ‘ μœΌλ‘œ, 과거에 발견된 섀계에 κ΄€ν•œ λ…Έν•˜μš°μ— 이름을 λΆ™μ—¬ μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•œ 것.

즉, 섀계에 κ΄€ν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμ„ λ•Œ λ””μžμΈ νŒ¨ν„΄ '이름'만으둜 해결책을 찾을 수 있게 ν•΄μ£ΌλŠ” ν›Œλ₯­ν•œ μ˜μ‚¬μ†Œν†΅μ΄ λ˜λŠ” 역할을 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, A κ°œλ°œμžκ°€ νŠΉμ • 데이터λ₯Ό μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨μ— κ³΅μœ ν•΄μ•Ό ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”λ° μ–΄λ–»κ²Œ 할지 κ³ λ―Όν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μ˜†μ— 있던 B κ°œλ°œμžκ°€ 'μ˜΅μ €λ²„ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λŠ”κ±΄ μ–΄λ•Œ?'라고 μ˜κ²¬μ„ μ£ΌλŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. λ§Œμ•½, λ””μžμΈ νŒ¨ν„΄μ„ λͺ¨λ₯Έλ‹€λ©΄ 'μ΄λ ‡κ²Œ μ΄λ ‡κ²Œ ν•΄μ„œ μ €λ ‡κ²Œ μ €λ ‡κ²Œ κ΅¬ν˜„ν•˜λŠ”κ²Œ μ–΄λ•Œ?'라고 ꡬꡬ절절 μ„€λͺ…ν•˜κ³  μžˆμ—ˆκ² μ£ ?

λ””μžμΈ νŒ¨ν„΄μ„ ν•™μŠ΅ν•˜κΈ° μœ„ν•œ μΆ”μ²œ λ„μ„œ

사싀 인터넷을 찾아보면 쒋은 μ„€λͺ…κ³Ό 예제 μ½”λ“œκ°€ ν¬ν•¨λœ λ§Žμ€ λΈ”λ‘œκ·Έ 및 μ‚¬μ΄νŠΈλ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 개인적으둜 μ„œμ μ„ λ¨Όμ € κ΅¬μž…ν•˜κ³  읽어본 ν›„ 인터넷을 μ°ΎλŠ” 방법을 μ„ ν˜Έν•˜λŠ” 편이라, μ €λŠ” 이미 두 가지 μ„œμ μ„ κ΅¬λ§€ν–ˆμŠ΅λ‹ˆλ‹€. λ¨Όμ €, λ””μžμΈ νŒ¨ν„΄μ˜ κ΅κ³Όμ„œμΈ <<GoF의 Design Patterns>> 이 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” GoF라고 λΆˆλ¦¬λŠ” 4λͺ…μ˜ μ†Œν”„νŠΈμ›¨μ–΄ 곡학 연ꡬ원이 λ§Œλ“  μ±…μž…λ‹ˆλ‹€. μƒλ‹Ήνžˆ 였래됐으며 λ„ˆλ¬΄ 이둠적인 λ‚΄μš©μ΄ κ°•ν•˜λ‹€λŠ” λŠλ‚Œμž…λ‹ˆλ‹€. 마치 λŒ€ν•™κ΅ μˆ˜μ—… ꡐ재 κ°™λ”κ΅°μš”. μ•„λ¬΄λž˜λ„ μ˜€λž˜μ „ μž‘μ„±λ˜μ—ˆκ³  λ””μžμΈ νŒ¨ν„΄μ΄ 처음 μ œμ‹œλœ 책이닀 λ³΄λ‹ˆ 그런 것 κ°™μŠ΅λ‹ˆλ‹€. κ·Έλ ‡λ‹€κ³  μ•ˆμ’‹λ‹€λŠ” μ–˜κΈ°κ°€ μ•„λ‹™λ‹ˆλ‹€. 이 책은 μ²˜μŒμ—λŠ” 읽기 어렡더라도 두 번이고 μ„Έ 번이고 κΌ­ 읽어보길 ꢌμž₯ν•˜λŠ” μ±…μž…λ‹ˆλ‹€.

YES23 링크: http://www.yes24.com/Product/Goods/17525598

GoF Design Patterns ν‘œμ§€, ν”„λ‘œν…λ―Έλ””μ–΄

두 번째 λ„μ„œλŠ” <<Design Head First Design Patterns: μŠ€ν† λ¦¬κ°€ μžˆλŠ” νŒ¨ν„΄ ν•™μŠ΅λ²•>> μž…λ‹ˆλ‹€. ν‘œμ§€λ§Œ 보더라도 λ„ˆλ¬΄λ‚˜ 색닀λ₯Έ λŠλ‚Œμ΄ λ“­λ‹ˆλ‹€. 사싀 λ‹€λ₯Έ IT κ΄€λ ¨ μ„œμ μ„ 보더라도 이런 λŠλ‚Œμ˜ ν‘œμ§€λŠ” λ³Έ 기얡이 μ•ˆλ‚˜λ”κ΅°μš”. λ‚΄μš©λ„ μƒλ‹Ήνžˆ μƒˆλ‘­μŠ΅λ‹ˆλ‹€. λŒ€ν™” ν˜•νƒœμ˜ 진행과 순차적으둜 μ—…κ·Έλ ˆμ΄λ“œ λ˜λŠ” 예제 μ½”λ“œ, 그리고 λ§Žμ€ κ·Έλ¦Ό μ„€λͺ…, λ§ˆμ§€λ§‰μœΌλ‘œ μ‰¬μš΄ μ„€λͺ…이 νŠΉμ§•μœΌλ‘œ 꼽을 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. 사싀 ν—€λ“œ 퍼슀트 μ‹œλ¦¬μ¦ˆλŠ” μƒλ‹Ήνžˆ 유λͺ…ν•œ μ±…μΈλ°μš”. μ•ŒλΌλ”˜ 쀑고 μ„œμ μ„ κ΅¬μž…ν•˜λ €κ³  ν–ˆμ§€λ§Œ ν•΄λ‹Ή λ„μ„œλ§Œ μ—†λ”κ΅°μš”. λ‹€λ₯Έ 책듀에 λΉ„ν•΄ μ†Œμž₯ κ°€μΉ˜κ°€ μžˆλŠ” μƒλ‹Ήνžˆ μΆ”μ²œν•  λ§Œν•œ μ±…μž…λ‹ˆλ‹€. κ²Œλ‹€κ°€ 이 책은 인터넷에 무료둜 영문 PDFλ₯Ό μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ €μž‘κΆŒμ— λ¬Έμ œκ°€ μ—†λŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ, ꡬ글에 κ²€μƒ‰ν•˜λ©΄ μ‰½κ²Œ λ‹€μš΄λ‘œλ“œ 받을 수 μžˆμŠ΅λ‹ˆλ‹€. κ΅­λ‚΄μ—λŠ” ν•œλΉ›λ―Έλ””μ–΄μ—μ„œ ν•œκΈ€λ‘œ λ²ˆμ—­λœ λ„μ„œλ₯Ό νŒλ§€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

ν•œλΉ›μŠ€ν† μ–΄ 링크: http://www.hanbit.co.kr/store/books/look.php?p_code=B9860513241

Head First Design Patterns, ν•œλΉ›λ―Έλ””μ–΄

마무리...

이제 ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  λ•Œ νŽœμ„ 작고 섀계뢀터 ν•˜λŠ” μŠ΅κ΄€μ„ κΈ°λ₯΄λ„둝 ν•˜μ„Έμš”. λ¬Όλ‘ , μƒλ‹Ήνžˆ λ°˜λ³΅λ˜μ–΄ ν•™μŠ΅λœ μ½”λ“œμ˜ κ²½μš°μ—λŠ” κ³§λ°”λ‘œ 코딩을 해도 λœλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ, μ²˜μŒλΆ€ν„° 타이핑을 ν•΄λ²„λ¦¬λŠ” μŠ΅κ΄€μ€ μ•ˆμ’‹λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 천천히 도식도λ₯Ό κ·Έλ €κ°€λ©° 관계λ₯Ό κ΅¬μ„±ν•˜κ³  μ–΄λ–€ λ””μžμΈ νŒ¨ν„΄μ„ μ μš©ν• μ§€, λ•Œλ‘œλŠ” λ‹€λ₯Έ νŒ¨ν„΄μ„ μ μš©ν•˜λ©΄μ„œ μž₯,단점을 κ²½ν—˜ν•˜λŠ” 것도 μ’‹λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ•„λž˜ 링크듀은 μœ„μ—μ„œ μ†Œκ°œν•œ 두 개의 μ„œμ μ„ μ°Έκ³ ν•˜μ—¬ 제 λ‚˜λ¦„λŒ€λ‘œ 더 μ‰½κ²Œ 이해할 수 있게 μ„€λͺ…ν•œ κ²ƒμž…λ‹ˆλ‹€. 예제 μ½”λ“œλ„ ν¬ν•¨λ˜μ–΄ μžˆμœΌλ‹ˆ 읽고 따라해 λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

[Design Pattern] μ˜΅μ €λ²„ νŒ¨ν„΄(Observer Pattern) 이야기 #1 (예제 포함)

[Design Pattern] μ˜΅μ €λ²„ νŒ¨ν„΄(Observer Pattern) 이야기 #2 (예제 포함)

[Design Pattern] MVC(Model-View-Controller) νŒ¨ν„΄ 이야기 #1

[Design Pattern] MVC(Model-View-Controller) νŒ¨ν„΄ 이야기 #2

λ°˜μ‘ν˜•