SOLID 원칙

December 14, 2022에 μž‘μ„± Β· January 1, 1970에 변경됨

SOLID μ›μΉ™μ΄λž€?

클린 μ½”λ“œ μ €μžμΈ λ‘œλ²„νŠΈ λ§ˆν‹΄μ΄ μ •λ¦¬ν•œ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 원칙. 쒋은 객체 지ν–₯ 섀계λ₯Ό μœ„ν•΄μ„  이 원칙듀을 따라야 ν•œλ‹€.

1. SRP(Single Responsiblity Principle) : 단일 μ±…μž„ 원칙

  • ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„μ„ 따라야 ν•œλ‹€ (클래슀의 관심사가 ν•˜λ‚˜μΈ 것)
  • 변경이 일어났을 λ•Œ 변경이 μΌμ–΄λ‚œ λΆ€λΆ„λ§Œ λ°”λ€Œμ–΄μ•Ό ν•œλ‹€ (νŒŒκΈ‰ νš¨κ³Όκ°€ 적어야 ν•œλ‹€)

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

  • ν™•μž₯μ—λŠ” μ—΄λ €μžˆμ§€λ§Œ λ³€κ²½μ—λŠ” λ‹«ν˜€μžˆμ–΄μ•Ό ν•œλ‹€. - λ‹€ν˜•μ„±
  • μ—­ν• κ³Ό κ΅¬ν˜„μ„ λΆ„λ¦¬ν•˜λŠ” κ²ƒμœΌλ‘œ μƒκ°ν•˜λ©΄ λœλ‹€. (κ΅¬ν˜„μœΌλ‘œ ν™•μž₯이 κ°€λŠ₯ν•˜μ§€λ§Œ, μΈν„°νŽ˜μ΄μŠ€κ°€ λ³€ν•˜μ§€ μ•ŠλŠ” ν•œ λ‹€λ₯Έ 곳에 변경은 μ—†μŒ)
  • κ΅¬ν˜„ 객체λ₯Ό μƒμ„±ν•˜κ³  연관관계λ₯Ό λ§Ίμ–΄μ£ΌλŠ” λ³„λ„μ˜ 쑰립, μ„€μ •μžκ°€ λŒ€μ‹  ν•„μš”ν•˜κ²Œ λœλ‹€.

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

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

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

  • λ²”μš© μΈν„°νŽ˜μ΄μŠ€ ν•˜λ‚˜ 보닀 νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ μ—¬λŸ¬ κ°œκ°€ λ‚«λ‹€.
  • λΆ„λ¦¬ν•˜λ©΄ μΈν„°νŽ˜μ΄μŠ€κ°€ λͺ…확해지고, λŒ€μ²΄ κ°€λŠ₯성이 높아진닀.

5. DIP(Dependency Inverstion Principle): μ˜μ‘΄κ΄€κ³„ μ—­μ „ 원칙

  • κ΅¬ν˜„ ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜μ§€ 말고 μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•΄μ•Ό ν•˜λŠ”κ²ƒ.
  • κ΅¬ν˜„μ²΄μ— μ˜μ‘΄ν•˜λ©΄ 변경이 μ–΄λ €μ›Œμ§€κ²Œ λœλ‹€.
  • μ˜μ‘΄μ„± μ£Όμž…μ€ 이 원칙을 λ”°λ₯΄λŠ” 방법 쀑 ν•˜λ‚˜. 좔상화인 μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•˜λ―€λ‘œ, μƒμ„±μžλ‘œ κ΅¬ν˜„μ²΄λ₯Ό κ°ˆμ•„λΌμšΈ 수 μžˆλ‹€.