SoftwareEngineering - YunByungKwan/Fundamental GitHub Wiki

SoftwareEngineering

객체지ν–₯ν”„λ‘œκ·Έλž˜λ°μ˜ 5λŒ€ 원칙(SOLID)

  1. SRP(단일 μ±…μž„ 원칙) ν•˜λ‚˜μ˜ λͺ¨λ“ˆμ€ ν•˜λ‚˜μ˜ 앑터에 λŒ€ν•΄μ„œλ§Œ μ±…μž„μ Έμ•Ό ν•œλ‹€λŠ” μ›μΉ™μž…λ‹ˆλ‹€.(λͺ¨λ“ˆ: μ†ŒμŠ€ 파일, μ•‘ν„°: μ‚¬μš©μž λ˜λŠ” μ΄ν•΄κ΄€κ³„μžμ˜ 집단)
  2. OCP(개방 폐쇄 원칙) ν™•μž₯μ—λŠ” μ—΄λ € μžˆμ–΄μ•Ό ν•˜κ³ , λ³€κ²½μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€λŠ” μ›μΉ™μž…λ‹ˆλ‹€. λ‹€μ‹œ λ§ν•˜λ©΄, μ‹œμŠ€ν…œμ€ ν™•μž₯ν•˜κΈ° μ‰¬μ›Œμ•Ό ν•˜κ³  λ™μ‹œμ— λ³€κ²½μœΌλ‘œ 인해 μ‹œμŠ€ν…œμ΄ λ„ˆλ¬΄ λ§Žμ€ 영ν–₯을 λ°›μœΌλ©΄ μ•ˆλœλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.
  3. LSP(λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙) Sνƒ€μž…μ˜ 객체 s1이 있고, Tνƒ€μž… 객체 t1이 μžˆμ„λ•Œ t1에 s1으둜 μΉ˜ν™˜ν•΄λ„ t1의 ν–‰μœ„κ°€ λ³€ν•˜μ§€ μ•ŠμœΌλ©΄ SλŠ” T의 ν•˜μœ„ νƒ€μž…μ΄λ‹€λΌλŠ” μ›μΉ™μž…λ‹ˆλ‹€. (μžμ‹ 객체λ₯Ό λΆ€λͺ¨ 객체에 μΉ˜ν™˜ν•΄λ„ μ΄μƒμ—†μœΌλ©΄ LSPλ₯Ό λ§Œμ‘±ν•œλ‹€λŠ” 의미)
  4. ISP(μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙) μ—¬λŸ¬ ν΄λž˜μŠ€κ°€ ν•œ ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜λŠ” 경우 λ§Žμ€ ν΄λž˜μŠ€κ°€ μ˜μ‘΄ν•˜λŠ” 클래슀λ₯Ό μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•΄μ„œ 뢄리해야 ν•œλ‹€λŠ” μ›μΉ™μž…λ‹ˆλ‹€.
  5. DIP(μ˜μ‘΄μ„± μ—­μ „ 원칙) μ†ŒμŠ€ μ½”λ“œ μ˜μ‘΄μ„±μ΄ ꡬ체에 μ˜μ‘΄ν•˜λ©΄ μ•ˆλ˜κ³  좔상에 μ˜μ‘΄ν•΄μ•Ό ν•œλ‹€λŠ” μ›μΉ™μž…λ‹ˆλ‹€.