Skip to content

quick-starters/design-pattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

52 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

λ””μžμΈ νŒ¨ν„΄

κ°œμš”

μ‹λ‹Ήμ—μ„œ 였고 κ°„ 이야기

πŸ—£ μ’…λ―Ό : 흰 빡에 저리가 λ“€μ–΄μžˆλŠ” 크림 치즈 λ°œλΌμ£Όμ‹œκ³ μš”, 바닐라 μ•„μ΄μŠ€ν¬λ¦Όμ΄ λ“€μ–΄μžˆλŠ” μ΄ˆμ½” μ†Œλ‹€ν•˜κ³ , 베이컨이 λ“€μ–΄μžˆλŠ” ꡬ운 치즈 μƒŒλ“œμœ„μΉ˜ν•˜κ³ , ν† μŠ€νŠΈ μœ„μ— 참치 μƒλŸ¬λ“œ 얹은 κ²ƒν•˜κ³ , μ•„μ΄μŠ€ν¬λ¦Όν•˜κ³  길게 자λ₯Έ λ°”λ‚˜λ‚˜λ‘œ λ§Œλ“  λ°”λ‚˜λ‚˜ μŠ€ν”Œλ¦Ών•˜κ³ , 컀피도 ν•œ μž” μ£Όμ„Έμš”. μ»€ν”Όμ—λŠ” 크림 ν•œ μŠ€ν‘Ό, 섀탕 두 μŠ€ν‘Ό λ„£μ–΄ μ£Όμ‹œκ³ μš”. μ•„, 그리고 ν–„λ²„κ±°λŠ” κΌ­ 그릴 μœ„μ— μ˜¬λ €μ£Όμ„Έμš”.

πŸ—£ μ§€ν˜„ : C. J. ν™”μ΄νŠΈν•˜κ³ , λΈ”λž™ μ•€ ν™”μ΄νŠΈν•˜κ³ , 잭 λ² λ‹ˆν•˜κ³ , λΌλ””μ˜€ν•˜κ³ , ν•˜μš°μŠ€ 보트, 레귀러 컀피 ν•˜λ‚˜ μ£Όμ„Έμš”. 그리고 그릴둜 λΆ€νƒν•©λ‹ˆλ‹€.

μœ„ 두 주문은 μ „ν˜€ λ‹€λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 두 μ‚¬λžŒμ΄ μ£Όλ¬Έν•œ λ‚΄μš©μ€ κ°™κ±°λ“ μš”. 그럼 μ§€ν˜„μ”¨λŠ” μ–΄λ–»κ²Œ κ°„λ‹¨ν•˜κ²Œ μ£Όλ¬Έν•  수 μžˆμ—ˆμ„κΉŒμš”? μ£Όλ°©μž₯κ³Ό κ³΅ν†΅μœΌλ‘œ μ•„λŠ” μš©μ–΄λ₯Ό 썼기 λ•Œλ¬Έμž…λ‹ˆλ‹€. 이와 λ§ˆμ°¬κ°€μ§€λ‘œ λ””μžμΈ νŒ¨ν„΄μ€ 개발자 μ‚¬μ΄μ—μ„œ μ„œλ‘œ λͺ¨λ‘ 이해할 수 μžˆλŠ” μš©μ–΄λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ κ°œλ°œμžμ™€ 더 μ‰½κ²Œ λŒ€ν™”ν•  수 있고, 객체 μˆ˜μ€€μ΄ μ•„λ‹Œ νŒ¨ν„΄ μˆ˜μ€€μ—μ„œ 생각할 수 μžˆκΈ°μ— μ•„ν‚€ν…μ²˜λ₯Ό μƒκ°ν•˜λŠ” μˆ˜μ€€λ„ λŒμ–΄μ˜¬λ €μ€λ‹ˆλ‹€.

μ˜μ‚¬μ†Œν†΅μ—μ„œμ˜ μž₯점

  1. μ„œλ‘œ μ•Œκ³  μžˆλŠ” νŒ¨ν„΄μ€ λ§‰κ°•ν•˜λ‹€.

    • λ‹€λ₯Έ κ°œλ°œμžλ‚˜ 같은 νŒ€μ— μžˆλŠ” μ‚¬λžŒκ³Ό νŒ¨ν„΄μœΌλ‘œ μ†Œν†΅ν•˜λ©΄ νŒ¨ν„΄ 이름과 νŒ¨ν„΄μ— 담겨 μžˆλŠ” λ‚΄μš©, νŠΉμ„±, μ œμ•½μ‘°κ±΄ 등을 ν•¨κ»˜ 이야기할 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. κ°„λ‹¨ν•œ λ‹¨μ–΄λ‘œ λ§Žμ€ μ–˜κΈ°λ₯Ό ν•  수 μžˆλ‹€.

  3. λ””μžμΈμ— 더 μ˜€λž«λ™μ•ˆ 집쀑할 수 μžˆλ‹€.

    • 객체와 클래슀 κ΅¬ν˜„κ³Ό κ΄€λ ¨λœ μžμ§ˆκ΅¬λ ˆν•œ λ‚΄μš©μ— μ‹œκ°„μ„ 버릴 ν•„μš”κ°€ μ—†μ–΄μ„œ λ””μžμΈμ— μ΄ˆμ μ„ 맞좜 수 μžˆμŠ΅λ‹ˆλ‹€.
  4. μ‹ μž… κ°œλ°œμžμ—κ²Œ ν›Œλ₯­ν•œ μžκ·Ήμ œκ°€ λœλ‹€.

객체지ν–₯κ³Ό νŒ¨ν„΄

νŒ¨ν„΄μ˜ λ°‘λ°”νƒ•μ—λŠ” 객체지ν–₯ νŒ¨ν„΄μ΄ μžˆμŠ΅λ‹ˆλ‹€. 관리가 μš©μ΄ν•œ 객체지ν–₯ μ‹œμŠ€ν…œμ„ λ§Œλ“œλŠ” λΉ„κ²° κ°€μš΄λ° ν•˜λ‚˜λŠ” λ‚˜μ€‘μ— μ–΄λ–»κ²Œ λ°”λ€” 것인지 λ₯Ό μƒκ°ν•΄λ³΄λŠ” κ²ƒμž…λ‹ˆλ‹€.

객체지ν–₯ 기초

  1. 좔상화
  2. μΊ‘μŠν™”
  3. λ‹€ν˜•μ„±
  4. 상속

객체 지ν–₯ 원칙

  1. λ°”λ€ŒλŠ” 뢀뢄은 μΊ‘μŠν™”ν•œλ‹€.
  2. μƒμ†λ³΄λ‹€λŠ” ꡬ성을 ν™œμš©ν•œλ‹€.
  3. κ΅¬ν˜„λ³΄λ‹€λŠ” μΈν„°νŽ˜μ΄μŠ€μ— λ§žμΆ°μ„œ ν”„λ‘œκ·Έλž˜λ°ν•œλ‹€.
  4. μƒν˜Έμž‘μš©ν•˜λŠ” 객체 μ‚¬μ΄μ—μ„œλŠ” κ°€λŠ₯ν•˜λ©΄ λŠμŠ¨ν•œ 결합을 μ‚¬μš©ν•΄μ•Όν•œλ‹€.
  5. ν΄λž˜μŠ€λŠ” ν™•μž₯μ—λŠ” μ—΄λ € μžˆμ–΄μ•Ό ν•˜μ§€λ§Œ λ³€κ²½μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Όν•œλ‹€.(OCP)
  6. μΆ”μƒν™”λœ 것에 μ˜μ‘΄ν•˜κ²Œ λ§Œλ“€κ³  ꡬ상 ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ²Œ λ§Œλ“ λ‹€.(DIP)

νŒ¨ν„΄

μ „λž΅ νŒ¨ν„΄μ€ μ•Œκ³ λ¦¬μ¦˜κ΅°μ„ μ •μ˜ν•˜κ³  μΊ‘μŠν™”ν•΄μ„œ 각각의 μ•Œκ³ λ¦¬μ¦˜κ΅°μ„ μˆ˜μ •ν•΄μ„œ μ“Έ 수 있게 ν•΄ μ€λ‹ˆλ‹€. μ „λž΅ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° μ•Œκ³ λ¦¬μ¦˜μ„ λΆ„λ¦¬ν•΄μ„œ λ…λ¦½μ μœΌλ‘œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜΅μ €λ²„ νŒ¨ν„΄

ν•œ 객체의 μƒνƒœκ°€ λ°”λ€Œλ©΄ κ·Έ 객체에 μ˜μ‘΄ν•˜λŠ” λ‹€λ₯Έ κ°μ²΄μ—κ²Œ 연락이가고 μžλ™μœΌλ‘œ λ‚΄μš©μ΄ κ°±μ‹ λ˜λŠ” λ°©μ‹μœΌλ‘œ μΌλŒ€λ‹€(one-to-many) μ˜μ‘΄μ„±μ„ μ •μ˜ν•©λ‹ˆλ‹€.

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

객체에 μΆ”κ°€ μš”μ†Œλ₯Ό λ™μ μœΌλ‘œ 더할 수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•˜λ©΄ μ„œλΈŒν΄λž˜μŠ€λ₯Ό λ§Œλ“€ λ•Œλ³΄λ‹€ 훨씬 μœ μ—°ν•˜κ²Œ κΈ°λŠ₯을 ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄

객체λ₯Ό 생성할 λ•Œ ν•„μš”ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“­λ‹ˆλ‹€. μ–΄λ–€ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€μ§€λŠ” μ„œλΈŒν΄λž˜μŠ€μ—μ„œ κ²°μ •ν•©λ‹ˆλ‹€. νŒ©ν† λ¦¬ λ©”μ„œλ“œ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ 클래슀 μΈμŠ€ν„΄μŠ€ λ§Œλ“œλŠ” 일을 μ„œλΈŒ ν΄λž˜μŠ€μ—κ²Œ 맑기게 λ©λ‹ˆλ‹€.

좔상 νŒ©ν† λ¦¬ νŒ¨ν„΄

ꡬ상 ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³ λ„ μ„œλ‘œ μ—°κ΄€λ˜κ±°λ‚˜ 의쑴적인 객체둜 이루어진 μ œν’ˆκ΅°μ„ μƒμ„±ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. ꡬ상 ν΄λž˜μŠ€λŠ” μ„œλΈŒ ν΄λž˜μŠ€μ—μ„œ λ§Œλ“­λ‹ˆλ‹€.

싱글톀 νŒ¨ν„΄

μ»€λ§¨λ“œ νŒ¨ν„΄

μ–΄λŒ‘ν„° νŒ¨ν„΄

νŒŒμ‚¬λ“œ νŒ¨ν„΄

ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ νŒ¨ν„΄

μ΄ν„°λ ˆμ΄ν„° νŒ¨ν„΄

μ»΄ν¬μ§€νŠΈ νŒ¨ν„΄

μƒνƒœ νŒ¨ν„΄

ν”„λ‘μ‹œ νŒ¨ν„΄

볡합 νŒ¨ν„΄

μ°Έκ³ 

About

🎨 λ””μžμΈ νŒ¨ν„΄ μŠ€ν„°λ””

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages