MAIN/Java & Spring

[Spring] OOP: SOLID 원칙

νƒνŠΈ 2025. 3. 26. 03:26

Object-Oriented Programming


πŸ‘‰ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ λ‹€μ„― κ°€μ§€ μ€‘μš”ν•œ 섀계 원칙을 SOLID 원칙이라고 ν•œλ‹€.

 

*λ”λ³΄κΈ°λŠ” κ΄€λ ¨ μ˜ˆμ‹œμž„

 

1. Single Responsibility Principle (단일 μ±…μž„ 원칙)

  • ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” 단 ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€.
  • 즉, μ—¬λŸ¬ κΈ°λŠ₯을 ν•œ ν΄λž˜μŠ€μ—μ„œ μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€.
더보기

βœ… 정보 μ €μž₯ κΈ°λŠ₯κ³Ό 정보 좜λ ₯ κΈ°λŠ₯을 λ³„λ„μ˜ 클래슀둜 뢄리

2. Open/Closed Principle (개방-폐쇄 원칙)

  • ν™•μž₯μ—λŠ” μ—΄λ € 있고, μˆ˜μ •μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€.
  • 즉, κΈ°μ‘΄ μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆλ„λ‘ μ„€κ³„ν•œλ‹€.
더보기

βœ… 쑰건문 λŒ€μ‹ , μΈν„°νŽ˜μ΄μŠ€λ‚˜ 좔상 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ κΈ°λŠ₯을 ν™•μž₯

3. Liskov Substitution Principle (λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙)

  • μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀λ₯Ό λŒ€μ²΄ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.
  • 즉, λΆ€λͺ¨ 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” κ³³μ—μ„œ μžμ‹ 클래슀λ₯Ό 넣을 수 있게 ν•œλ‹€.
더보기

βœ… Rectangle을 μƒμ†ν•œ Squareκ°€ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λ„λ‘ 보μž₯

4. Interface Segregation Principle (μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙)

  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μžμ‹ μ΄ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•˜μ§€ μ•Šλ„λ‘ ν•œλ‹€.
  • 즉, 큰 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ—¬λŸ¬ 개의 μž‘μ€ μΈν„°νŽ˜μ΄μŠ€λ‘œ λ‚˜λˆˆλ‹€.
더보기

βœ… Animal μΈν„°νŽ˜μ΄μŠ€μ— fly() λ©”μ„œλ“œλ₯Ό λ„£μ§€ μ•Šκ³ , Bird μΈν„°νŽ˜μ΄μŠ€μ—μ„œλ§Œ fly()λ₯Ό μ •μ˜

5. Dependency Inversion Principle (의쑴 μ—­μ „ 원칙)

  • κ³ μˆ˜μ€€ λͺ¨λ“ˆ(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직)이 μ €μˆ˜μ€€ λͺ¨λ“ˆ(λ°μ΄ν„°λ² μ΄μŠ€)에 μ˜μ‘΄ν•˜μ§€ μ•Šλ„λ‘ ν•œλ‹€.
  • 즉, 좔상화(μΈν„°νŽ˜μ΄μŠ€)에 μ˜μ‘΄ν•΄μ•Ό ν•˜κ³ , ꡬ체적인 κ΅¬ν˜„μ²΄μ— μ˜μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€.
더보기

βœ… Database 클래슀λ₯Ό 직접 μ‚¬μš©ν•˜μ§€ μ•Šκ³ , μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€μ–΄ κ΅¬ν˜„ 클래슀λ₯Ό μ£Όμž…

λŒ“κΈ€μˆ˜0