SOLID μμΉ [κ°μ²΄ μ§ν₯ μ€κ³/ 5κ°μ§ μμΉ /κ°λ ]
SOLID μμΉμ 5κ°μ§ μμΉμΌλ‘ μ΄λ£¨μ΄μ Έμλ€.
- SRP : λ¨μΌ μ± μ μμΉ (Single Responsibility Principle)
- OCP : κ°λ°©-νμ μμΉ (Open/Closed Principle)
- LSP : 리μ€μ½ν μΉν μμΉ (Liskov Substitution Principle)
- ISP : μΈν°νμ΄μ€ λΆλ¦¬ μμΉ (Interface Segregation Principle)
- DIP : μμ‘΄κ΄κ³ μμ μμΉ (Dependency Inversion Principle)
𧑠SRP (λ¨μΌ μ± μ μμΉ)
- ν ν΄λμ€λ νλμ μ± μλ§ κ°μ ΈμΌ νλ€.
* μ€μν κΈ°μ€ : λ³κ²½ (λ³κ²½μ΄ μμ λ νκΈ ν¨κ³Όκ° μ μΌλ©΄ λ¨μΌ μ± μ μμΉμ μ λ°λ₯Έ κ²μ΄λ€.)
π OCP (κ°λ°©-νμ μμΉ)
- μννΈμ¨μ΄ μμλ νμ₯μλ μ΄λ € μμΌλ λ³κ²½μλ λ«ν μμ΄μΌ νλ€.
- λ€νμ±μ μ΄μ©ν΄μ λ³κ²½μ μ©μ΄νκ² λ§λ€ μλ μμ§λ§ ꡬν κ°μ²΄λ₯Ό λ³κ²½νλ €λ©΄ ν΄λΌμ΄μΈνΈ μ½λλ₯Ό λ³κ²½ν μ λ°μ μλ€.
β μ€νλ§ μ»¨ν μ΄λλ₯Ό μ΄μ©νλ€λ©΄ ν΄κ²° κ°λ₯!!
π LSP (리μ€μ½ν μΉν μμΉ)
- νλ‘κ·Έλ¨μ κ°μ²΄λ νλ‘κ·Έλ¨μ μ νμ±μ κΉ¨λ¨λ¦¬μ§ μμΌλ©΄μ νμ νμ μ μΈμ€ν΄μ€λ‘ λ°κΏ μ μμ΄μΌ νλ€.
- κΈ°λ₯μ μΌλ‘ 보μ₯ν΄μ€μΌ νλ€. ( ex) μμ μ 무쑰건 μμΌλ‘ κ°μΌλ¨, νμ§μ 무쑰건 λ€λ‘ κ°μΌλ¨)
π ISP (μΈν°νμ΄μ€ λΆλ¦¬ μμΉ)
- νΉμ ν΄λΌμ΄μΈνΈλ₯Ό μν μΈν°νμ΄μ€ μ¬λ¬ κ°κ° λ²μ© μΈν°νμ΄μ€ νλλ³΄λ€ λ«λ€.
- ex) μλμ°¨ μΈν°νμ΄μ€ -> μ΄μ μΈν°νμ΄μ€, μ λΉ μΈν°νμ΄μ€λ‘ λΆλ¦¬ν΄μ μΈν°νμ΄μ€λ₯Ό λͺ ννκ² νλ€.
π DIP (μμ‘΄κ΄κ³ μμ μμΉ)
- νλ‘κ·Έλλ¨Έλ "μΆμνμ μμ‘΄ν΄μΌμ§, ꡬ체νμ μμ‘΄νλ©΄ μλλ€." μμ‘΄μ± μ£Όμ μ μ΄ μμΉμ λ°λ₯΄λ λ°©λ² μ€ νλλ€.
π ꡬνν΄λμ€μ μμ‘΄νμ§ λ§κ³ , μΈν°νμ΄μ€μ μμ‘΄νλΌλ λ»
- ex) Member m = new MemoryMember(); β (μ΄κ±΄ μΆμν(μΈν°νμ΄μ€) μλ μμ‘΄νκ³ , ꡬ체νμλ μμ‘΄νκ³ μλ μν)
Member m; μ΄λ κ² νκ³ μμ±μλ₯Ό λ§λ€μ΄μ μ°κ²°μμΌμ€λ€.