πνλ‘κ·Έλλ° ν¨λ¬λ€μ
- νλ‘κ·Έλλ¨Έμκ² νλ‘κ·Έλλ°μ κ΄μ μ κ°κ² ν΄μ£Όλ μν μ νλ κ°λ° λ°©λ²λ‘ μ΄λ€.
ν¬κ² 1.μ μΈν - ν¨μν, 2.λͺ
λ Ήν - κ°μ²΄μ§ν₯ν, μ μ°¨μ§ν₯ν μΌλ‘ λλλ€.
πμ μΈνκ³Ό ν¨μν νλ‘κ·Έλλ°
- "νλ‘κ·Έλ¨μ ν¨μλ‘ μ΄λ£¨μ΄μ§ κ²μ΄λ€."λΌλ λͺ
μ κ° λ΄κ²¨μλ ν¨λ¬λ€μ.
- μμ 'μμ ν¨μ'λ€μ λΈλ‘μ²λΌ μμ λ‘μ§μ ꡬννκ³ , 'κ³ μ°¨ ν¨μ'λ₯Ό ν΅ν΄ μ¬μ¬μ©μ±μ λμΈ ν¨λ¬λ€μμ΄λ€.
μμν¨μ: μΆλ ₯μ΄ μ
λ ₯μλ§ μμ‘΄νλ κ²μ μλ―Έ. λ€λ₯Έ μ μλ³μλ±μ΄ μΆλ ₯μ μν₯μ μ£Όλ©΄ μμ ν¨μκ° μλλ€.
κ³ μ°¨ν¨μ: ν¨μκ° ν¨μλ₯Ό κ°μ²λΌ λ§€κ°λ³μλ‘ λ°μ λ‘μ§μ μμ±ν μ μλ κ²μ λ§νλ€.
μΌκΈκ°μ²΄: κ³ μ°¨ν¨μλ₯Ό μ°κΈ° μν΄μλ ν΄λΉ μΈμ΄κ° μΌκΈ κ°μ²΄λΌλ νΉμ§μ κ°μ ΈμΌ νλ€.
- λ³μλ λ©μλμ ν¨μλ₯Ό ν λΉν μ μλ€.
- ν¨μ μμ ν¨μλ₯Ό λ§€κ°λ³μλ‘ λ΄μ μ μλ€.
- ν¨μκ° ν¨μλ₯Ό λ°νν μ μλ€.
πκ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
- κ°μ²΄λ€μ μ§ν©μΌλ‘ νλ‘κ·Έλ¨μ μνΈμμ©μ νν, λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ μ·¨κΈνμ¬ κ°μ²΄ λ΄λΆμ μ μΈλ λ©μλ νμ©.
μΆμν
- 볡μ‘ν μμ€ν
μΌλ‘λΆν° ν΅μ¬μ μΈ κ°λ
λλ κΈ°λ₯μ κ°μΆλ €λ΄λκ².
μΊ‘μν
- κ°μ²΄μ μμ±κ³Ό λ©μλλ₯Ό νλλ‘ λ¬Άκ³ μΌλΆλ₯Ό μΈλΆμ κ°μΆμ΄ μλ.
μμμ±
- μμ ν΄λμ€μ νΉμ±μ νμ ν΄λμ€κ° μ΄μ΄λ°μ μ¬μ¬μ©.
λ€νμ±
- νλμ λ©μλλ ν΄λμ€κ° λ€μν λ°©λ²μΌλ‘ λμνλ κ²μ λ§ν¨
ex) μ€λ²λ‘λ©, μ€λ²λΌμ΄λ©
μ€λ²λ‘λ©
- κ°μ μ΄λ¦μ κ°μ§ λ©μλλ₯Ό μ¬λ¬ κ° λλ κ²μ λ§ν¨
λ©μλμ νμ
, λ§€κ°λ³μμ μ ν, κ°μ λ±μΌλ‘ ꡬλΆνλ€.
β»μ»΄νμΌ μ€ λ°μνλ 'μ μ ' λ€νμ±
public void eat(String a){ }
public void eat(String a,String b){ }
μ€λ²λΌμ΄λ©
- μ£Όλ‘ λ©μλ μ€λ²λΌμ΄λ©μ λ§νλ©°, μμν΄λμ€μμ μμλ°μ λ©μλλ₯Ό νμν΄λμ€μμ μ¬μ μνλ κ²μ μλ―Έ.
β»λ°νμμ€ λ°μνλ 'λμ ' λ€νμ±
class Animal {
public void bark(){
System.out.println("mumu! mumu!");
}
}
class Dog extends Animal {
@override
public void bark(){
System.out.println("wal! wal!");
}
}
πμ€κ³μμΉ SOLID
λ¨μΌ μ±
μ μμΉ(SRP)
- λͺ¨λ ν΄λμ€λ κ°κ° νλμ μ±
μ λ§ κ°μ ΈμΌ νλ μμΉ
κ°λ°©-νμ μμΉ(OCP)
- μ μ§ λ³΄μ μ μ½λλ₯Ό μ½κ² νμ₯ν μ μλλ‘ νκ³ μμ μμλ λ«ν μμ΄μΌ νλ μμΉ.
κΈ°μ‘΄μ½λλ λ³κ²½νμ§ μμΌλ©΄μλ νμ₯μ μ½κ² ν μ μμ΄μΌ ν©λλ€.
리μ€μ½ν μΉν μμΉ(LSP)
- νλ‘κ·Έλ¨ κ°μ²΄λ νλ‘κ·Έλ¨μ μ νμ±μ κΉ¨λ¨λ¦¬μ§ μμΌλ©΄μ νμ νμ
μ μΈμ€ν΄μ€λ‘ λ°κΏ μ μμ΄μΌ νλ κ²μ μλ―Έ.
λΆλͺ¨ κ°μ²΄μ μμ κ°μ²΄λ₯Ό λ£μ΄λ μμ€ν
μ΄ λ¬Έμ μμ΄ λμκ°κ² λ§λλ κ²μ λ»ν¨.
μΈν°νμ΄μ€ λΆλ¦¬ μμΉ(ISP)
- νλμ μΌλ°μ μΈ μΈν°νμ΄μ€λ³΄λ€ ꡬ체μ μΈ μ¬λ¬ κ°μ μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄μΌ νλ μμΉμ λ»ν¨.
μμ‘΄ μμ μμΉ(DIP)
- λ³νκΈ° μ¬μ΄ κ²μ μμ‘΄νλ κ²μ μΆμνλ μΈν°νμ΄μ€λ μμν΄λμ€λ₯Ό
λμ΄ λ³νμ μν₯λ°μ§ μκ²νλ μμΉμ λ»ν¨.
μμ κ³μΈ΅μ νμ κ³μΈ΅μ λ³νμ λν ꡬνμΌλ‘λΆν° λ
립ν΄μΌ νλ€.
πμ μ°¨ν νλ‘κ·Έλλ°
- λ‘μ§μ΄ μνλμ΄μΌ ν μ°μμ μΈ κ³μ° κ³Όμ μΌλ‘ μ΄λ£¨μ΄μ Έ μλ€.
μΌμ΄ μ§νλλ λ°©μμΌλ‘ ꡬννμ¬ μ½λμ κ°λ
μ±μ΄ μ’μΌλ©°, μ€νμλκ° λΉ λ₯΄λ€. κ³μ°μ΄ λ§μ μμ
μ μ°μ.
λΉμ¦λμ€ λ‘μ§μ΄λ μλΉμ€μ νΉμ§μ κ³ λ €ν΄ ν¨λ¬λ€μμ μ νκ³ , μ¬λ¬ ν¨λ¬λ€μμ μ‘°ν©νμ¬ μ₯μ λ§ μ·¨ν΄ κ°λ°νλκ²μ΄ κ°μ₯ μ’μ λ°©λ²μ΄λ€