Open minwoorich opened 8 months ago
IoCλ Inversion Of Controll μ μ½μλ‘ νκΈλ‘ μ§μνλ©΄ "μ μ΄μ μμ " μ΄λΌκ³ ν΄μλ μ μμΌλ©° νλ μ μν¬λ€μ μ£Όμ κΈ°λ₯ μ€ νλμ λλ€.
κΈ°μ‘΄μ κ°λ°μλ€μ΄ μ½λμμμ μ§μ κ°μ²΄λ₯Ό μμ±, νΈμΆ, μλ©Έ μν€λ μμ μ μμ±νλ€λ©΄, μ€νλ§ νλ μμν¬μμλ μ΄ μμ μ μ€νλ§ μ»¨ν μ΄λλΌ λΆλ¦¬λ IoC 컨ν μ΄λκ° λμ κ°μ²΄λ₯Ό μμ±, νΈμΆ, μλ©Έ λ±μ κ΄λ¦¬λ₯Ό λ맑μνκ² λ©λλ€. μ€νλ§ μ»¨ν μ΄λλ κ°μ²΄λ€μ μ±κΈν΄μΌλ‘ κ΄λ¦¬ν¨μΌλ‘μ¨ μλ²μ μμμ λ³΄λ€ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μκ² λμμΌλ©° κ°λ°μλ€μ μλΉμ€ λ‘μ§μ κ°λ°νλλ° λ³΄λ€ λ λ§μ μ§μ€μ ν μ μκ² λμμ΅λλ€.
DI λ Dependency Injection μ μ½μλ‘ νκΈλ‘ μ§μνλ©΄ "μμ‘΄μ± μ£Όμ " μ΄λΌκ³ ν΄μ ν μ μμ΅λλ€.
DIλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μ£Όλ‘ μ¬μ©λλ λμμΈ ν¨ν΄ λ° κΈ°λ² μ€ νλλ‘ κ°μ²΄κ° λ€λ₯Έ κ°μ²΄μ κΈ°λ₯μ νμλ‘ ν λ μμ μ΄ μ§μ κ²μ λ° μμ± νλκ²μ΄ μλ μΈλΆλ‘λΆν° (μμ±μ or νλΌλ―Έν°,,,) λ±μΌλ‘ μ£Όμ λ°λ κΈ°λ²μ μλ―Έν©λλ€. DI λ₯Ό ν΅ν΄ λ°νμ μμ μ λμ μΌλ‘ ꡬν체λ₯Ό μ ννμ¬ μ¬μ© ν μ μμ΅λλ€. λν DIP μμΉμ κ³ λ €νμ¬ κ΅¬νμ²΄κ° μλ μΈν°νμ΄μ€μ μμ‘΄νλλ‘ μ€κ³ νλ€λ©΄ "λμ¨ν κ²°ν©" μ΄ μ΄λ£¨μ΄μ Έ λ³΄λ€ μ μ°νκ³ νμ₯ κ°λ₯ν μ½λλ₯Ό μμ± ν μ μμ΅λλ€.
μ€νλ§μ λΉλ‘―ν΄ λ§μ νλ μμν¬λ€μ΄ μμ μ€λͺ ν IoCλ₯Ό DI λ₯Ό νμ©ν΄ ꡬνν©λλ€.
// DI λ―Έμ¬μ©
public class Car{
public void move(){
Wheel wheel = new WhiteWheel(); // Wheel κ°μ²΄λ₯Ό μ§μ μμ±, ꡬν체λ₯Ό λ°κΏλλ§λ€ μ½λκ° μμ λμ΄μΌν¨
// Wheel wheel = new BlackWheel();
// Wheel wheel = new BlueWheel();
// Wheel wheel = new YellowWheel();
wheel.role();
}
}
// DI μ¬μ©
public class Car{
private final Wheel wheel;
public Car(Wheel wheel){
this.wheel = wheel; // Wheel μ μΈλΆμμ μ£Όμ
}
public void move(){
wheel.role(); // μΈλΆλ‘λΆν° μ£Όμ
λ°μ wheel μ μ¬μ©
}
}
IoCλ λκ³ DIλ λκ°μ? κ°κ° μ€λͺ ν΄μ£ΌμΈμ