Backend/Spring
[Spring] μ’μ κ°μ²΄ μ§ν₯ μ€κ³μ 5κ°μ§ μμΉ(SOLID)
_μ±νΈ_
2022. 3. 14. 16:52
728x90
λ°μν
SRP(Single responsibility principle) λ¨μΌ μ± μ μμΉ
- ν ν΄λμ€λ νλμ μ± μλ§ κ°μ ΈμΌ νλ€.
- μ€μν κΈ°μ€μ λ³κ²½μ΄λ€. λ³κ²½μ΄ μμ λ νκΈ ν¨κ³Όκ° μ μΌλ©΄ λ¨μΌ μ± μ μμΉμ μ λ°λ₯Έ κ²μ΄λ€.
- ex) UI λ³κ²½, κ°μ²΄μ μμ±κ³Ό μ¬μ©μ λΆλ¦¬
OCP(Open/closed principle) κ°λ°©-νμ μμΉ
- μννΈμ¨μ΄ μμλ νμ₯μλ μ΄λ € μμΌλ λ³κ²½μλ λ«ν μμ΄μΌ νλ€.
- λ€νμ±μ μ¬μ©νλλΌλ OCP μμΉμ μ§ν¬ μ μλ€λ λ¬Έμ μ (ν΄λΌμ΄μΈνΈ μ½λ λ³κ²½)μ΄ μλ€.
- κ°μ²΄λ₯Ό μμ±νκ³ , μ°κ΄κ΄κ³λ₯Ό λ§Ίμ΄μ£Όλ λ³λμ 쑰립, μ€μ μκ° νμνλ€. (μ€νλ§ μ»¨ν μ΄λμ μν )
LSP(Liskov substitution principle) 리μ€μ½ν μΉν μμΉ
- νλ‘κ·Έλ¨μ κ°μ²΄λ νλ‘κ·Έλ¨μ μ νμ±μ κΉ¨λ¨λ¦¬μ§ μμΌλ©΄μ νμ νμ μ μΈμ€ν΄μ€λ‘ λ°κΏ μ μμ΄μΌ νλ€.
- ex) μλμ°¨ μΈν°νμ΄μ€μ μμ μ μμΌλ‘ κ°λΌλ κΈ°λ₯, λ€λ‘ κ°κ² ꡬννλ©΄ LSP μλ°, λ리λλΌλ μμΌλ‘ κ°μΌνλ€.
ISP(Interface segregation principle) μΈν°νμ΄μ€ λΆλ¦¬ μμΉ
- νΉμ ν΄λΌμ΄μΈνΈλ₯Ό μν μΈν°νμ΄μ€ μ¬λ¬ κ°κ° λ²μ© μΈν°νμ΄μ€ νλλ³΄λ€ λ«λ€.
- μλμ°¨ μΈν°νμ΄μ€ -> μ΄μ μΈν°νμ΄μ€, μ λΉ μΈν°νμ΄μ€λ‘ λΆλ¦¬
- μ¬μ©μ ν΄λΌμ΄μΈνΈ -> μ΄μ μ ν΄λΌμ΄μΈνΈ, μ λΉμ¬ ν΄λΌμ΄μΈνΈλ‘ λΆλ¦¬
- λΆλ¦¬νλ©΄ μ λΉ μΈν°νμ΄μ€ μμ²΄κ° λ³ν΄λ μ΄μ μ ν΄λΌμ΄μΈνΈμ μν₯μ μ£Όμ§ μμ
- μΈν°νμ΄μ€κ° λͺ νν΄μ§κ³ , λ체 κ°λ₯μ±μ΄ λμμ§λ€.
DIP(Dependency inversion principle) μμ‘΄κ΄κ³ μμ μμΉ
- νλ‘κ·Έλλ¨Έλ "μΆμνμ μμ‘΄ν΄μΌμ§, ꡬ체νμ μμ‘΄νλ©΄ μλλ€." μμ‘΄μ± μ£Όμ μ μ΄ μμΉμ λ°λ₯΄λ λ°©λ² μ€ νλλ€.
- ν΄λΌμ΄μΈνΈ μ½λκ° κ΅¬ν ν΄λμ€μ μμ‘΄νμ§ λ§κ³ , μΈν°νμ΄μ€(μν )μ μμ‘΄νλΌλ λ»μ΄λ€.