DI
Last updated
Last updated
μ°μ μλλ‘μ΄λ DI λ₯Ό μ μ©νλ©΄ νλ₯ν μ± μν€ν μ²λ₯Ό μν ν λλ₯Ό λ§λ ¨ν μ μλ€. μλλ‘μ΄λ 곡μλ¬Έμμ λ°λ₯΄λ©΄ DI λ₯Ό μ μ©νλ©΄ μλμ κ°μ μ΄μ μ΄ λ릴 μ μλ€.
μ½λ μ¬μ¬μ© κ°λ₯
리ν©ν λ§ νΈμμ±
ν μ€νΈ νΈμμ±
μ΄ κΈμ μμ±νλ©΄μ λ μ€μ€λ‘ μμ μ΄μ λ€μ μ λλ¦¬κ³ μμλμ§ λλμ λ³Ό κ²μ΄λ€.
μ°μ ν΄λμ€μλ λ€λ₯Έ ν΄λμ€ μ°Έμ‘°κ° νμνλ€. μλ₯Ό λ€μ΄ Car
ν΄λμ€λ Engine
ν΄λμ€ μ°Έμ‘°κ° νμν μ μλ€.
μ΄μ²λΌ νμν ν΄λμ€λ₯Ό μ’
μ νλͺ©(dependencies) μ΄λΌκ³ νλ©°, Car
ν΄λμ€κ° μ€νλκΈ° μν΄μλ Engine
ν΄λμ€μ μΈμ€ν΄μ€κ° νμνλ€.
ν΄λμ€κ° νμν κ°μ²΄λ₯Ό μ»λ λ°©λ²μ 3κ°μ§κ° μλ€.
ν΄λμ€κ° νμν μ’ μ νλͺ© (Engine Class) μ ꡬμ±νλ€. μ μμμλ Car ν΄λμ€λ μ체 Engine μΈμ€ν΄μ€λ₯Ό μμ±νμ¬ μ΄κΈ°ννλ€.
λ€λ₯Έ κ³³μμ κ°μ²΄λ₯Ό κ°μ Έμ¨λ€. Context
getter & getSystemService
() μ κ°μ μΌλΆ Android APIλ μ¬λ¬ν λ°©μμΌλ‘ μλνλ€.
κ°μ²΄λ₯Ό λ§€κ²λ³μλ‘ μ 곡λ°λλ€. μ±μ ν΄λμ€κ° ꡬμ±λ λ μ΄λ¬ν μ’ μ νλͺ©μ μ 곡νκ±°λ κ° μ’ μ νλͺ©μ΄ νμν ν¨μμ μ λ¬ν μ μλ€. μ μμμλ Car μμ±μλ Engine μ λ§€κ°λ³μλ‘ λ°λλ€.
μ¬κΈ°μ λ§νλ 3λ²μ§Έ λ°©λ²μ΄ λ°λ‘ DI / μμ‘΄μ±μ£Όμ μ΄λ€ π₯ μ΄ λ°©λ²μ μ¬μ©νλ©΄ ν΄λμ€ μΈμ€ν΄μ€κ° μ체μ μΌλ‘ μ’ μ νλͺ©μ μ»λ λμ ν΄λμ€μ μ’ μ νλͺ©μ λ°μμ μ 곡νλ€.
μ°μ 1λ²κ³Ό κ°μ λ°©λ²μΌλ‘ μΈμ€ν΄μ€ν νλκ±°λ μλ μ½λμ κ°λ€.
μ΄ μλ Car ν΄λμ€κ° μ체 Engine μ κ°μ²΄μμ± ν μ¬μ©νκΈ° λλ¬Έμ DI κ° μλλ€. λν μλμ κ°μ λ¬Έμ κ° λ°μν μ μλ€.
Car μ Engine μ λ°μ νκ² μ°κ²°λμ΄μλ€. Car μΈμ€ν΄μ€λ ν κ°μ§ μ νμ Engine μ μ¬μ©νλ―λ‘ μλΈν΄λμ€ λλ λ체 ꡬνμ μ½κ² μ¬μ©ν μ μλ€. Car κ° μ체 Engine μ ꡬμ±νλ€λ©΄ Gas
/ Electric
μ νμ μμ§μ λμΌν Car λ₯Ό μ¬μ¬μ©νλ λμ λ κ°μ§ μ νμ Carμ μμ±ν΄μΌ νλ€.
μ μμ μ κ°μ΄ μμ‘΄μ±μ΄ λμ κ²½μ° λ€μν ν μ€νΈ μΌμ΄μ€μμ ν μ€νΈλ₯Ό λμ± μ΄λ ΅κ² λ§λ λ€.
μμ‘΄μ± μ£Όμ μ νλμ κ°μ²΄κ° λ€λ₯Έ κ°μ²΄μ μμ‘΄μ±μ μ 곡νλ κΈ°μ μ΄λ€.
μμ‘΄μ± μ£Όμ μ κ΄λ²μν μμ μ΄ ν ν¬λμ ν ννμ΄λ€. μ΄λ€ μλΉμ€λ₯Ό νΈμΆν λ €λ ν΄λΌμ΄μΈνΈλ κ·Έ μλΉμ€κ° μ΄λ»κ² ꡬμ±λμλμ§ μμ§ λͺ»ν΄μΌ νλ€. ν΄λΌμ΄μΈνΈλ λμ μλΉμ€ μ 곡μ λν μ± μμ μΈλΆ μ½λ(μ£Όμ μ)λ‘ μμνλ€. ν΄λΌμ΄μΈνΈλ μ£Όμ μ μ½λλ₯Ό νΈμΆν μ μλ€. κ·Έ λ€μ μ£Όμ μλ μ΄λ―Έ μ‘΄μ¬νκ±°λ μ£Όμ μμ μν΄ κ΅¬μ±λμμ μλΉμ€λ₯Ό ν΄λΌμΈνΈλ‘ μ£Όμ νλ€. κ·Έλ¦¬κ³ λμ ν΄λΌμ΄μΈνΈλ μλΉμ€λ₯Ό μ¬μ©νλ€. μμ‘΄μ± μ£Όμ μ λ€ κ°μ§ μν μ λ΄λΉνλ κ°μ²΄ λ° μΈν°νμ΄μ€λ₯Ό μ μ λ‘ νλ€.
μ¬μ©λ μλΉμ€ κ°μ²΄ - μ κΈ°, κ°μ€, νμ΄λΈλ¦¬λ λλ λμ € μλμ°¨
μ¬μ©νλ μλΉμ€μ μμ‘΄νλ ν΄λΌμ΄μΈνΈ κ°μ²΄ - μμ§μ μκ΄ μμ΄ λμΌνκ² μ°¨λ₯Ό μ¬μ©νλ μ΄μ μ
ν΄λΌμ΄μΈνΈμ μλΉμ€ μ¬μ© λ°©λ²μ μ μνλ μΈν°νμ΄μ€ - μ΄μ μκ° κΈ°μ΄μ κ°μ μμ§μ μΈλΆ μ¬νμ μ΄ν΄ν νμκ° μλλ‘ λ³΄μ₯ν΄μ£Όλ μλλ³μκΈ°
μλΉμ€λ₯Ό μμ±νκ³ ν΄λΌμ΄μΈνΈλ‘ μ£Όμ νλ μ± μμ κ°λ μ£Όμ μ - μμ΄μκ² μ΄λ€ μ°¨λ₯Ό μ¬μ€μ§ κ²°μ νκ³ κ΅¬λ§€ν΄μ€ λΆ
1. μμ±μ μ½μ
2. νλ μ½μ
μ μμ μ κ°μ DI κΈ°λ° μ κ·Όλ°©λ²μ μ΄μ μ λ€μκ³Ό κ°λ€.
Car μ μ¬μ¬μ©κ°λ₯. Engine μ λ€μν ꡬνμ Car μ μ λ¬ν μ μλ€. μλ₯Ό λ€μ΄ GasEngine μ μ¬μ©νλ κ²½μ°, Engine ν΄λμ€λ₯Ό μμλ°μ μλΈν΄λμ€λ₯Ό μ μν μ μλ€. GasEngine μ μΈμ€ν΄μ€λ‘ μ λ¬νλ©΄ Car ν΄λμ€λ μλ¬΄λ° λ³κ²½μμ΄ μ¬μ©ν μ μλ€.
μ΄μ μμμλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ§ μκ³ μ§μ μμ± λ° κ΄λ¦¬λ₯Ό νμλ€. μ΄λ₯Ό μ§μ μ’ μ | μλ νλͺ© μ½μ μ΄λΌκ³ νλ€. μ’ μ νλͺ©μ΄ λ§μ μ§ μλ‘ μ’ μ νλͺ©μ μ½μ νλ μμ μ΄ μ§λ£¨ν΄ μ§ μ μλ€. λΏλ§ μλλΌ λ€μκ³Ό κ°μ λ¬Έμ μ λ€μ΄ μλ€.
λκ·λͺ¨ μ±μ κ²½μ° λͺ¨λ μ’ μ νλͺ©μ κ°μ Έμ μ¬λ°λ₯΄κ² μ°κ²°νλ €λ©΄ λλμ μμ©κ΅¬ μ½λκ° νμνλ€. μλ‘, μλμ°¨λ₯Ό λ§λ€λ €λ©΄ μμ§,λ³μκΈ° κΈ°ν λΆν μμ§μλ μ€λ¦°λ, μ ν νλ‘κ·Έ λ±μ΄ νμλ‘ νλ€.
μ’ μ νλͺ©μ μ λ¬νκΈ° μ μ ꡬμ±ν μ μμ λλ λ©λͺ¨λ¦¬μμ μ’ μ νλͺ©μ μ 체 κΈ°κ°μ κ΄λ¦¬νλ λ§μΆ€ 컨ν μ΄λλ₯Ό μμ±νκ³ μ μ§ν΄μΌ νλ€.
μ΄λ¬ν λ¬Έμ μ λ€μ ν΄κ²°νλ λΌμ΄λΈλ¬λ¦¬λ€μ΄ μ‘΄μ¬νλ©°, μ΄λ λ κ°μ§ μΉ΄ν κ³ λ¦¬λ‘ λΆλ₯λλ€.
λ°νμ μ μ’ μ νλͺ©μ μ°κ²°νλ 리νλ μ κΈ°λ° μ루μ - Koin...
μ»΄νμΌ νμμ μ’ μ νλͺ©μ μ°κ²°νλ μ½λλ₯Ό μμ±νλ μ μ μ루μ - Dagger / Hilt...
μ μ λ¬νμ¬ λ€μν μλλ¦¬μ€ ν μ€νΈλ₯Ό ν μ μλ€.