[Spring] OOP: SOLID 원칙

2025. 3. 26. 03:26Β·Engineering Notes/Java & Spring

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 클래슀λ₯Ό 직접 μ‚¬μš©ν•˜μ§€ μ•Šκ³ , μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€μ–΄ κ΅¬ν˜„ 클래슀λ₯Ό μ£Όμž…

'Engineering Notes > Java & Spring' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[🦁3] OOP와 객체지ν–₯ 섀계체쑰  (2) 2025.03.28
λ¬΄λΆ„λ³„ν•œ Getter & Setter μ‚¬μš©μ€ OOP 원칙을 μœ„λ°°ν•œλ‹€.  (0) 2025.03.27
[Java] μ œλ„€λ¦­κ³Ό λͺ…λͺ… κ΄€λ‘€  (1) 2025.03.24
[🦁2] Web App & Spring MVC #2  (2) 2025.03.23
[🦁2] Web App & Spring MVC #1  (0) 2025.03.21
'Engineering Notes/Java & Spring' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [🦁3] OOP와 객체지ν–₯ 섀계체쑰
  • λ¬΄λΆ„λ³„ν•œ Getter & Setter μ‚¬μš©μ€ OOP 원칙을 μœ„λ°°ν•œλ‹€.
  • [Java] μ œλ„€λ¦­κ³Ό λͺ…λͺ… κ΄€λ‘€
  • [🦁2] Web App & Spring MVC #2
UTACT
UTACT
μ‹œμž‘μ€ κ°€λ³κ²Œ μ΄μœ λŠ” 무겁게
  • UTACT
    Software Engineer
    UTACT
    • GitHub
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • README
  • 졜근 κΈ€

    • λΆ„λ₯˜ 전체보기 (126)
      • Project Logs (2)
        • DashHub (2)
        • Re:Act (0)
        • Samsung NW (0)
      • Engineering Notes (76)
        • Java & Spring (44)
        • Database & Persistence (1)
        • DevOps & Infra (4)
        • CS & Algorithms (26)
        • Security (1)
      • Reflections (5)
        • Retrospectives (1)
        • Feedback Received (3)
        • Challenges (1)
      • Tips (24)
      • Archive (19)
  • νƒœκ·Έ

    Array
    vite
    νŒ€ μ •λ ¬
    @CreatedDate
    λ“€μ–Ό 피봇 퀡 μ •λ ¬
    Reallocation
    Data Type
    인접 λ…Έλ“œ 리슀트
    BOJ
    cherry-pick
    iamdefinitelyabackenddeveloper
    OOP
    REST
    .prettierrc
    Python
    hate-cnu
    도컀
    BFS
    where-was-i
    JPA
    IntelliJ
    VS Code
    νƒ€μž… μ†Œκ±°
    ν† μŠ€νŽ˜μ΄λ¨ΌμΈ 
    CS
    버프 슈트
    데이터 μ˜μ†μ„±
    heap
    DS
    heapify
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.6
UTACT
[Spring] OOP: SOLID 원칙
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”