๋ชฉ์ฐจ
๋ค์ด๊ฐ๊ธฐ ์ ์
์ด๋ฒ์ ์๋ก ๋ค์ด์จ ํ๋ก์ ํฐ์์๋ Hilt๋ผ๋ ์ข ์ํญ๋ชฉ ์ฝ์ ์ ์ฌ์ฉํ๊ณ ์์๋ค.
๋๋ hilt๋ฅผ ์ฌ์ฉํด๋ณธ ์ ์ด ์์ด์ ์ข ์ํญ๋ชฉ ์ฝ์ ์ ๊ธฐ๋ณธ๋ถํฐ ์คํฐ๋๊ฐ ํ์ํ๋๋ฐ ๋ง์นจ ๊ฐ๋ฐ ์ค ์๊ฐ์ด ๋์ ์๋๋ก์ด๋ ๊ณต์ ๋ฌธ์์์ ์ ๊ณตํ๋ ์ข ์ ํญ๋ชฉ ์ฝ์ ์ ๋ํด์ 3ํ์ ๊ฑธ์ณ์ ์ดํดํด๋ณด๋๋ก ํ๋ค!!
์ข ์ ํญ๋ชฉ ์ฝ์ ์ด๋??
์๋ฅผ ๋ค์ด์ ์ดํดํด๋ณด์.
์ค๋์ ๋ฉ๋ด๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ๋ด์ Menu ํด๋์ค๊ฐ ์๋ค๋ฉด ์ด ํด๋์ค์์๋ ์์นจ ๋ฉ๋ด๋ฅผ ๋ง๋๋ Breakfast ํด๋์ค์ ์ฐธ์กฐ๊ฐ ํ์ํ๋ค. ์ด๋ ๊ฒ ํ์ํ ํด๋์ค๋ฅผ ์ข ์ํญ๋ชฉ์ด๋ผ๊ณ ํ๋ค. Menu ํด๋์ค๊ฐ ์คํ๋๊ธฐ ์ํด์๋ Breakfast ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์์ด์ผํ๋ค.
ํด๋์ค๊ฐ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ป๋ ๋ฐฉ๋ฒ 3๊ฐ์ง
1๏ธโฃ ํด๋์ค๊ฐ ํ์ํ ์ข ์ํญ๋ชฉ์ ๊ตฌ์ฑํ๋ค.
- Menu ํด๋์ค๋ Breakfast ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ด๊ธฐํํ๋ค.
2๏ธโฃ ๋ค๋ฅธ ๊ณณ์์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค.
- Context getter ๋ฐ getSystemService์ ๊ฐ์ android api์ ์ผ๋ถ๊ฐ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
3๏ธโฃ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๊ณต๋ฐ๋๋ค.
-์ฑ์ ํด๋์ค๊ฐ ๊ตฌ์ฑ๋ ๋ ์ด๋ฌํ ์ข ์ํญ๋ชฉ(ํ์ํ ํด๋์ค)์ ์ ๊ณตํ๊ฑฐ๋ ๊ฐ ์ข ์ ํญ๋ชฉ์ด ํ์ํ ํจ์์ ์ ๋ฌํ ์ ์๋ค.
์ฐ๋ฆฌ ์์์์ ์ดํด๋ณด๋ฉด Menu ์์ฑ์๋ Breakfast ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ค.
์ด ๋ 3๋ฒ์ด ์ข ์ ํญ๋ชฉ ์ฝ์ ์ด๋ค. ์ด ๋ฐฉ๋ฒ์ ํตํด์ ํด๋์ค ๊ฐ์ฒด๊ฐ ์์ฒด์ ์ผ๋ก ์ข ์ ํญ๋ชฉ์ ์ป๋ ๋์ ์ ํด๋์ค์ ์ข ์ ํญ๋ชฉ์ ๋ฐ์์ ์ ๊ณตํ๋ค.
์ด ์๋ 1๋ฒ ๋ฐฉ์์ผ๋ก ์์ฒด Breakfast ์ข ์ ํญ๋ชฉ์ ์์ฑํ๋ Menu๋ฅผ ๋ํ๋ธ ์ฝ๋์ด๋ค. Menu ํด๋์ค๊ฐ ์์ฒด Breakfast๋ฅผ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ ์ข ์ ํญ๋ชฉ ์ฝ์ ์ด ์๋๋ค.
class Menu {
private val breakfast = Breakfast()
fun eatRice() {
breakfast.eatRice()
}
}
fun main(args: Array
์ด์ ์ข ์ ํญ๋ชฉ ์ฝ์ ์ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
Menu ์์ฑ์์ breakfast๋ผ๋ ์ข ์ ํญ๋ชฉ์ ์ ๋ฌํ๊ณ ์๋ค. ์์ฑ์๋ฅผ ํตํด Menu ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํ์ํ Breakfast ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ ์ ์๋ค.
class Menu(private val breakfast : Breakfast) {
fun makeRice() {
breakfast.makeRice()
}
}
fun main(args : Array
main ํจ์์์ Menu ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ...
Menu ํด๋์ค๋ Breakfast์ ์ข ์๋๋ฏ๋ก ์ฑ์ Breakfast ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ์ด๋ฅผ ์ฌ์ฉํด์ Menu ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ค.
์ด๋ ๊ฒ ๊ตฌ์ฑํ ๋์ ์ด์ ๋ ๊ฐ์ง
1๏ธโฃ Menu์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ.
Breakfast์ ๋ค์ํ ๊ตฌํ์ Menu์ ์ ๋ฌํ ์ ์๋ค.
์๋ฅผ ๋ค์ด Menu์์ ์ฌ์ฉํ AmericanBreakfast์ด๋ผ๋ ์๋ก์ด Breakfast ์๋ธ ํด๋์ค๋ฅผ ์ ์ํ ์ ์๋ค.
์ข ์ ํญ๋ชฉ ์ฝ์ ์ ์ฌ์ฉํ๋ฉด ์ด๋ ๊ฒ ์ ๋ฐ์ดํธ๋ AmericanBreakfast ์๋ธํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๊ธฐ๋ง ํ๋ฉด Menu ํด๋์ค๋ ๋ณ๊ฒฝ์์ด ์๋ํ๋ค.
2๏ธโฃ Menu์ ํ ์คํธ ํธ์์ฑ
Android์์ ์ข ์ ํญ๋ชฉ ์ฝ์ ์ ์คํํ๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ
1๏ธโฃ ์์ฑ์ ์ฝ์
ํด๋์ค์ ์ข ์ ํญ๋ชฉ์ ์์ฑ์์ ์ ๋ฌํ๋ค. ๋ค์ ๋งํด ํ์ฌ์ ํด๋์ค์ ํ์ํ ํด๋์ค๋ฅผ ํ์ฌ ํด๋์ค์ ์์ฑ์์ ์ ๋ฌํ๋ ๋ฐฉ์์ด๋ค.
์์์ ์ดํด๋ณธ ๋ฐฉ์์ด๋ค.
2๏ธโฃ ํ๋ ์ฝ์ ๋๋ setter ์ฝ์
์กํฐ๋นํฐ๋ ํ๋๊ทธ๋จผํธ์ ๊ฐ์ ํน์ android ํด๋์ค๋ ์์คํ ์์ ์ธ์คํด์คํํ๋ฏ๋ก ์์ฑ์ ์ฝ์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
ํ๋ ์ฝ์ ์ ์ฌ์ฉํ๋ฉด ์ข ์ ํญ๋ชฉ์ ํด๋์ค๊ฐ ์์ฑ๋ ํ์ ์ธ์คํด์คํ๋๋ค!
์ฝ๋๋ก ์ดํด๋ณด์.
class Menu {
lateinit var breakfast : Breakfast
fun makeRice() {
breakfast.makeRice()
}
}
fun main(args: Array
์ข ์ ํญ๋ชฉ ์๋ ์ฝ์
์ง๊ธ๊น์ง ์ค๋ช ํ ๋ฐฉ์์ฒ๋ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํด๋์ค๋ค์ ์ข ์ ํญ๋ชฉ์ ์ง์ ์์ฑ , ์ ๊ณต, ๊ด๋ฆฌํ๋ค.์ด๋ฌํ ๋ฐฉ์์ ์ข ์ ํญ๋ชฉ ์ง์ ์ฝ์ ๋๋ ์ข ์ ํญ๋ชฉ ์๋ ์ฝ์ ์ด๋ผ๊ณ ํ๋ค.
Menu ์์์๋ ์ข ์ ํญ๋ชฉ์ด Breakfast ํด๋์ค ํ๋๋ง ์์์ง๋ง ํ์ํ ํด๋์ค ์ฆ ์ข ์ ํญ๋ชฉ๊ณผ ํด๋์ค๊ฐ ๋ง์์ง๋ฉด ์๋์ผ๋ก ์ข ์ ํญ๋ชฉ์ ์ฝ์ ํ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
- ์ต์์ ๋ ์ด์ด์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ค๋ฉด ๊ทธ ์๋์ ์๋ ๋ ์ด์ด์ ๋ชจ๋ ์ข ์ํญ๋ชฉ์ ์ ๊ณตํด์ผํ๋ค.
์ค์ ๋ฉ๋ด๋ฅผ ๋ง๋ค๋ ค๋ฉด ์์นจ, ์ ์ฌ, ์ ๋ ์ด ํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์นจ์๋ ๋ฐฅ, ๊ตญ, ๋ฐ์ฐฌ(๋ฉ์ธ,์ฌ์ด๋), ๋์ ํธ๊ฐ ํ์ํ๋ค.
- ์ข ์ ํญ๋ชฉ์ ์ ๋ฌํ๊ธฐ ์ ์ ๊ตฌ์ฑํ ์ ์์ ๋ (์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ฐ์ฒด ๋ฒ์๋ฅผ ์ฑ์ ํ๋ฆ์ผ๋ก ์ง์ ํ ๋)
๋ ๋ง์ถค ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์ ์งํด์ผํ๋ค.
์ง๊ธ์ ๊ทธ๋ฅ ์ด๋ฐ๊ฒ ์๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ๊ณ ํฐ ํ๋ฆ์ ์ดํดํด๋ณด์!
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ข ์ ํญ๋ชฉ์ ์์ฑ ์ ๊ณตํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํด์ผํ๋ค!!! ์ด ๋ Dagger๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
์ข ์ ํญ๋ชฉ ์ฝ์ ์ ๋์ : ์๋น์ค ๋ก์ผ์ดํฐ
object ServiceLocator {
fun makeRice() : Breakfast = Breakfast()
}
class Menu {
private val breakfast : ServiceLocator.makeRice()
fun makeRice() {
breakfast.makeRice()
}
}
fun main(args : Array
Android ์ฑ์์ Hilt ์ฌ์ฉ
Hilt๋ Android์์ ์ข ์ ํญ๋ชฉ์ ์ฝ์ ํ๊ธฐ ์ํ Jetpack์ ๊ถ์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์์ ๋งํ Dagger๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น๋๋์๋ค.
์ ๋ฆฌํ๊ธฐ
1๏ธโฃ์ข ์ ํญ๋ชฉ์ด๋ ํ์ํ ํด๋์ค๋ฅผ ๋งํ๋ค,
Menu ํด๋์ค์์ ์ข ์ํญ๋ชฉ์ Breakfast ํด๋์ค์ด๋ค
2๏ธโฃ์ข ์ ํญ๋ชฉ ์ฝ์ ๋ฐฉ๋ฒ 2๊ฐ์ง๊ฐ ์๋ค.
์ข ์ ํญ๋ชฉ ์ฝ์ ์ด๋ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๊ณต๋ฐ๋ ๊ฒ์ ๋งํ๋ค.
- ์์ฑ์ ์ฝ์ ์ ํ์ฌ์ ํด๋์ค์ ์์ฑ์ ์์ ํ์ํ ํด๋์ค๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋ ๋ฐฉ์์ด๋ค.
- ํ๋ ์ฝ์
'๐ค2024 ์๋๋ก์ด๋ > ๐ฟ ์ํ ํ๋ก์ ํธ ๊ฐ๋ฐ ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ซAndroid ๋ก๊ทธ์ธ ํ ํฐ ์ ์ฅ : Proto Datastore ์ ์ฉํ๊ธฐ (0) | 2024.03.15 |
---|---|
Android ๋คํธ์ํฌ ํต์ ๊ฐ๋ ์ตํ๊ธฐ [REST,URL, URI, Retrofit] (0) | 2024.03.05 |
[android ๋ก๊ทธ์ธ] jwt token์ผ๋ก ๊ตฌ๊ธ ๋ก๊ทธ์ธ ์์ฑํ๊ธฐ (0) | 2024.02.15 |
[hilt 2ํ] hilt ๋ฅผ ์ฌ์ฉํ ์ข ์ ํญ๋ชฉ ์ฝ์ (0) | 2024.02.10 |
android์์ ๊ตฌ๊ธ ๋ก๊ทธ์ธ ์ฐ๋ํ๊ธฐ (1) | 2024.02.03 |