CS

[Java] SOLID

moaoh 2024. 3. 21. 15:21

쒋은 객체 μ§€ν–₯ μ„€κ³„μ˜ 5κ°€μ§€ 원칙 SOLID

SRC: 단일 μ±…μž„ 원칙

  • ν•œ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Όν•œλ‹€.
  • 변경이 μžˆμ„ λ•Œ νŒŒκΈ‰ νš¨κ³Όκ°€ 적으면 단일 μ±…μž„ 원칙을 잘 λ”°λ₯Έ 것 ( UI λ³€κ²½, 객체의 생성과 μ‚¬μš©μ„ 뢄리 λ“± )

OCP: 개방-폐쇄 원칙

  • μ†Œν”„νŠΈμ›¨μ–΄ μš”μ†ŒλŠ” ν™•μž₯μ—λŠ” μ—΄λ €μžˆμœΌλ‚˜ λ³€κ²½μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Όν•œλ‹€.
  • λ‹€ν˜•μ„±μ„ ν™œμš©ν•˜λ©΄ ν™•μž₯μ—λŠ” μ—΄λ €μžˆμœΌλ‚˜ λ³€κ²½μ—λŠ” λ‹«ν˜€μžˆκ²Œ ν•  수 μžˆλ‹€.
  • μœ„μ— κ·Έλ¦Όκ³Ό 같은 κ°œλ…μ„ μ΄μ•ΌκΈ°ν•œλ‹€.
  • OCPλ₯Ό μ§€ν‚€κΈ°μœ„ν•΄μ„œλŠ” 객체λ₯Ό μƒμ„±ν•˜κ³ , 연관관계λ₯Ό λ§Ίμ–΄μ£ΌλŠ” λ³„λ„μ˜ 쑰립, μ„€μ •μžκ°€ ν•„μš”ν•˜λ‹€.

LSP: λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙

  • ν”„λ‘œκ·Έλž¨μ˜ κ°μ²΄λŠ” ν”„λ‘œκ·Έλž¨μ˜ 정확성을 κΉ¨λœ¨λ¦¬μ§€ μ•ŠμœΌλ©΄μ„œ ν•˜μœ„ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ‘œ λ°”κΏ€ 수 μžˆμ–΄μ•Όν•œλ‹€.
  • ν•˜μœ„ν΄λž˜μŠ€λŠ” μƒμœ„ μΈν„°νŽ˜μ΄μŠ€μ˜ κ·œμ•½μ„ λ‹€ μ§€μΌœμ•Όν•œλ‹€.

ISP: μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙

  • νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ μ—¬λŸ¬ κ°œκ°€ λ²”μš© μΈν„°νŽ˜μ΄μŠ€ ν•˜λ‚˜λ³΄λ‹€ λ‚«λ‹€.
  • κΈ°λŠ₯듀을 상황에 맞게 μ λ‹Ήν•œ 크기둜 잘 μͺΌκ°œλŠ” 게 μ€‘μš”ν•˜λ‹€.
  • μΈν„°νŽ˜μ΄μŠ€λ₯Ό 뢄리해도 ν΄λΌμ΄μ–ΈνŠΈμ— 영ν–₯을 μ£Όμ§€μ•ŠλŠ”λ‹€.
  • μΈν„°νŽ˜μ΄μŠ€κ°€ λͺ…ν™•ν•΄μ§€κ³ , λŒ€μ²΄ κ°€λŠ₯성이 λ†’μ•„μ§„λ‹€.

DIP: μ˜μ‘΄κ΄€κ³„ μ—­μ „ 원칙

  • “좔상화에 μ˜μ‘΄ν•΄μ•Όμ§€, ꡬ체화에 μ˜μ‘΄ν•˜λ©΄ μ•ˆλœλ‹€.”
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ κ°œλ°œν• λ•Œ κ΅¬ν˜„ ν΄λž˜μŠ€μ— μ˜μ‘΄ν•΄μ„œ κ°œλ°œμ„ ν•΄μ„œλŠ” μ•ˆλ˜κ³ , μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•΄μ„œ κ°œλ°œμ„ ν•΄μ•Όν•œλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•΄μ•Ό μœ μ—°ν•˜κ²Œ κ΅¬ν˜„μ²΄λ₯Ό λ³€κ²½ν•  수 μžˆλ‹€. κ΅¬ν˜„μ²΄μ— μ˜μ‘΄ν•˜κ²Œ 되면 변경이 μ•„μ£Ό μ–΄λ €μ›Œμ§„λ‹€.

κ²°λ‘ 

  • 객체 μ§€ν–₯의 핡심은 λ‹€ν˜•μ„±