๊ณต๋ถํ ๊ฒ
์๋๋ก์ด๋ ๊ฐ์ ์๊ฐ
์์กด์ฑ ์ฃผ์
ํ๋ก๊ทธ๋๋จธ์ค 1๋ฌธ์
์๊ฒ๋ ๊ฒ
1. ์์กด์ฑ ์ฃผ์ (Dependancy Injection)
์ด๋ฒ์ ์์กด์ฑ ์ฃผ์
์ด๋ผ๋ ๊ฒ์ ์ฒ์ ์ ํ๊ฒ ๋๋ค. ์์กด์ฑ
์ด๋ผ๋ ๋จ์ด ์์ฒด๋ฅผ build.gradle
์ ์ ์ธํ๋ implementation 'org.jetbrains...
์ฒ๋ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
๋ง๊ณ ๋ ์ ํด๋ณธ ์ ์ด ์์๋ค. ์๋ฌดํผ ์ค๋ ๊ฐ์
๋ฅผ ์๊ฐํ๋ฉด์ ์์กด์ฑ ์ฃผ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Koin
์ ์ ํ๊ณ ์ด์ ๊ดํด์ ์ข ๋ ์ฐพ์๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค.
์์กด์ฑ ์ฃผ์
์ด๋ผ๋ ๊ฐ๋
์์ฒด๋ ์ด๋ ต์ง ์์๋ค. ์ฐ์ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
class Car {
private val engine = Engine()
private fun start() {
engine.start()
}
}
class Engine {
...
}
fun main() {
val car = Car()
car.start()
}
์ ์ฝ๋์ ํน์ง์ Car
์ Engine
์ด ์์กด์ฑ์ ๊ฐ๊ณ ์๋ค. Car
๋ Engine
ํด๋์ค ์ฐธ์กฐ๊ฐ ํ์ํ๊ณ Car
๊ฐ ์คํ๋๊ธฐ ์ํด์ Engine
์ ์ธ์คํด์ค
๊ฐ ํ์ํ๋ค.
์์กด์ฑ
์ ์ด๋ป๊ฒ ์์จ ์ ์์๊น? ์์ฑ์ ์ฝ์
๊ณผ ํ๋ ์ฝ์
๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด์.
class Car(private val engine: Engine) {
private fun start() {
engine.start()
}
}
class Engine {
...
}
fun main() {
val car = Car()
car.start()
}
Car
์ ์์ฑ์ ๋งค๊ฐ๋ณ์๋ก Engine
์ ์ ๋ฌํจ์ผ๋ก์จ ์์กด์ฑ
์ ์ ๊ฑฐ(์ฃผ์
)ํ๋ค.
class Car {
lateinit var engine : Engine
private fun start() {
engine.start()
}
}
class Engine {
...
}
fun main() {
val car = Car()
car.engine = Engine()
car.start()
}
Car
์ ํ๋์ ์ง์ฐ ์ด๊ธฐํ
๋ฅผ ์ฌ์ฉํ์ฌ Engine
์ ์ ๋ฌํจ์ผ๋ก์จ ์์กด์ฑ
์ ์ ๊ฑฐ(์ฃผ์
)ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์์กด์ฑ ์ฃผ์
์ ์ด์ ์ ๋ฌด์์ผ๊น? ์ผ๋จ ์ข
์ ๊ด๊ณ
๊ฐ ์๋๋ฏ๋ก ํ
์คํธ๊ฐ ์ฉ์ดํ๋ค. ๋ํ ์ฝ๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ค. ์ฝ๋ ์์ ์ฆ, ๋ฆฌํํ ๋ง
์ด ํ์ํ ๋ ์์กด์ฑ ์ฃผ์
์ด ๋์ด ์๋ ์ฝ๋๊ฐ ํจ์ฌ ๋ฆฌํํ ๋ง
์ด ์์ํ ๊ฒ์ด๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์์กด์ฑ ์ฃผ์
์ ์ด์ ์ด ๋ง์ง๋ง ๋ฌธ์ ๋ ์ฑ์ด ์ปค์ง์๋ก ํด๋์ค
๊ฐ ํ์๋ก ํ๋ ์์กด์ฑ
๋ค์ด ๋ง์์ง๊ณ , ์ด๋ฌํ ์์กด์ฑ
์ ๋ ๋ค๋ฅธ ์์กด์ฑ
์ ํ์๋ก ํ๊ธฐ์ ์์กด์ฑ ์ฃผ์
์ ์ํ ์ฝ๋
๋ค์ด ๋ง์์ง๋ค. ๊ฒฐ๊ตญ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋
๊ฐ ์ ์ ์ปค์ง๊ฒ ๋๋ ๋ถ์์ฉ?
์ด ๋ฐ์ํ๋ค. ์ด๋ฌํ ๋ถ์์ฉ?
์ ์์ ๊ธฐ ์ํด ์๋๋ก์ด๋
์์๋ ์์กด์ฑ ์ฃผ์
์ ์ํ Dagger
Hilt
Koin
์ ๊ฐ์ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์กด์ฌํ๋ค. ์ฐ์ ๋๋ ๋ฌ๋ ์ปค๋ธ
๊ฐ ๊ฐ์ฅ ๋ฎ๋ค๊ณ ํ๋จ๋ Koin
์ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ๋ค.
์ ๋ง ์ ์ ๋ฆฌ๋ ๊ธ์ด ์์ด์ ์ฒจ๋ถํ๋ค.
1. Dependency injection in Android
2. ์์กด์ฑ ์ฃผ์ ์ ๋ํ ๊ธฐ๋ณธ ์ดํด
๊ณต๋ถํ ๊ฒ
Koin
๊ณผ ์นํด์ง๊ธฐ
๋๋ ์
์์ ์ ๋ง ๊ณต๋ถ์ ํ์์ฑ์ ์ ์คํ ๋๋ผ๊ณ ์๋ค. coroutine
MVVM
flow
๋ฑ๋ฑ... ์ ์ ์๊ณ ์๋๊ฒ ๋ง์์ง๋ ๊ฒ ๊ฐ๊ธดํ๋ฐ ์ต์ํ์ง๊ฐ ์๋ค. ์ ์ฉํ๋๋ฐ๋ ๋ง์ด ์ด๋ ต๊ณ ์ผ๋จ ๋ฌ๋ ์ปค๋ธ
๊ฐ ๋๋ค๊ณ ๋๋๋ค. ์ข ๋ ์ฒด๊ณ์ ์ผ๋ก ๊ณต๋ถ๋ฅผ ํด์ผ๊ฒ ๋ค.
'๐ป ๊ฐ๋ฐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 22.03.23 (0) | 2022.03.23 |
---|---|
[TIL] 22.03.22 (0) | 2022.03.22 |
[TIL] 22.03.19 (0) | 2022.03.19 |
[TIL] 22.03.17 (0) | 2022.03.17 |
[TIL] 22.03.16 (0) | 2022.03.16 |