8์ฅ์์๋ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃฌ๋ค.
์์กด์ฑ์ ๋ฐํ์ ์์กด์ฑ๊ณผ ์ปดํ์ผํ์ ์์กด์ฑ์ผ๋ก ๋๋ ์ ์๋ค.
๋ฐํ์ ์์กด์ฑ(run-time dependency)
- ๊ฐ์ฒด ์ฌ์ด์ ์์กด์ฑ
์ปดํ์ผํ์ ์์กด์ฑ(compile-time dependency)
- ํด๋์ค ์ฌ์ด์ ์์กด์ฑ
์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ค๊ณ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ์ปดํ์ผํ์ ์์กด์ฑ๊ณผ ๋ฐํ์ ์์กด์ฑ์ด ๋ฌ๋ผ์ผ ํ๋ค(p.260)
๊ทธ๋ผ ์ด๋ป๊ฒ ์ปดํ์ผํ์ ์์กด์ฑ๊ณผ ๋ฐํ์ ์์กด์ฑ์ ๋ค๋ฅด๊ฒ ํ ์ ์์๊น?
์์กด์ฑ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง๊ฐ ์๋ค.
1. ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์ ์ ์์ฑ์๋ฅผ ํตํด ์์กด์ฑ ํด๊ฒฐ
2. ๊ฐ์ฒด ์์ฑ ํ setter ๋ฉ์๋๋ฅผ ํตํด ์์กด์ฑ ํด๊ฒฐ
3. ๋ฉ์๋ ์คํ ์ ์ธ์๋ฅผ ์ด์ฉํด ์์กด์ฑ ํด๊ฒฐ
์ฌ๊ธฐ์ 2๋ฒ setter ๋ฉ์๋๋ง ์ฌ์ฉํ๋ ๊ฑด ๊ฐ์ฒด๊ฐ ์์ฑ๋ ํ์ ํ์ํ ์์กด ๋์์ setter ๋ฉ์๋๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์
๋ง์ฝ ์์กด ๋์์ ์ค์ ํ์ง ์์ผ๋ฉด NullPointerException์ด ๋ฐ์ํ ์ ์๋ค.
๊ทธ๋์ ์์ฑ์ ๋ฐฉ์๊ณผ setter ๋ฐฉ์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด setter ๋ฉ์๋ ๋ฐฉ์์ ๊ฐ์ฒด ์์ฑ ์ดํ์
์์กดํ๊ณ ์๋ ๋์์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ฅ์ ๊ณผ ์์ฑ์ ๋ฐฉ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋
์์กด์ฑ์ ํด๊ฒฐํ ์ ์๋ ์ฅ์ ๋ชจ๋ ์ทจํ ์ ์๋ค.
์์กด์ฑ์ ๋ช ์์ (explicit dependency)์ผ๋ก ํํ๋๋ ๊ฒ์ด ์ข์๋ฐ ์์กด์ฑ์ด ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค์ ํํ๋์ง ์๋
์จ๊ฒจ์ง ์์กด์ฑ(hidden dependency)์ ๊ฒฝ์ฐ
1. ์์กด์ฑ์ ํ์ ํ๊ธฐ ์ํด ๋ด๋ถ ๊ตฌํ์ ํ์ธํด์ผ ํ๊ณ
2. ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด ๋ด๋ถ ๊ตฌํ์ ์ง์ ๋ณ๊ฒฝํด์ผ ํ๋ค๋
๋จ์ ์ด ์กด์ฌํ๋ค. ๊ทธ๋์ ์์กด์ฑ์ ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ช ์์ ์ผ๋ก ํํํด์ผ ํ๊ณ , ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค๋ฅผ ํตํด
์ปดํ์ผํ์ ์์กด์ฑ์ ๋ฐํ์ ์์กด์ฑ์ผ๋ก ๊ต์ฒดํ ์ ์๋ค.
์ถ๊ฐ๋ก, new ์ฐ์ฐ์๋ ์์กด์ฑ์ ์ถ๊ฐํ๊ณ ๊ฒฐํฉ๋๋ฅผ ๋์ด๊ธฐ ๋๋ฌธ์
์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ก์ง๊ณผ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ก์ง์ ๋ถ๋ฆฌํด์ผ ๋๋ค. ์ฆ, ์์ฑ์ ์ฑ ์์
๊ฐ์ฒด ๋ด๋ถ๊ฐ ์๋๋ผ ํด๋ผ์ด์ธํธ๋ก ์ฎ๊น์ผ๋ก์จ ์ค๊ณ๋ฅผ ์ ์ฐํ๊ฒ ๋ง๋ค ์ ์๋ค.
๊ฐ์ฒด์งํฅ ์ค๊ณ, ํ๋ ฅ์ ์ด๊ณ ์ ์ฐํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์์กด์ฑ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํด์ผ ํ๋ ๊ฑธ๊น?
1. ์ฌ์ฉ๊ณผ ์์ฑ์ ์ฑ ์์ ๋ถ๋ฆฌํ๊ณ ,
2. ์์กด์ฑ์ ์์ฑ์์ ๋ช ์์ ์ผ๋ก ๋๋ฌ๋ด๊ณ ,
3. ๊ตฌ์ฒด ํด๋์ค๊ฐ ์๋ ์ถ์ ํด๋์ค์ ์์กดํ๊ฒ ํด์ผ ํ๋ค.
// TODO
์์ฑ์ ์ฒด์ด๋ ๋ถ๋ถ ๊ณต๋ถ(p.274)
์คํฐ๋ ๋ ์ค๋ช ๋ค์
'์คํฐ๋ > ์ค๋ธ์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค๋ธ์ ํธ] 10์ฅ '์์๊ณผ ์ฝ๋ ์ฌ์ฌ์ฉ' (0) | 2022.12.16 |
---|---|
[์ค๋ธ์ ํธ] 9์ฅ '์ ์ฐํ ์ค๊ณ' (0) | 2022.12.09 |
[์ค๋ธ์ ํธ] 7์ฅ '๊ฐ์ฒด ๋ถํด' (0) | 2022.11.25 |
[์ค๋ธ์ ํธ] 6์ฅ '๋ฉ์์ง์ ์ธํฐํ์ด์ค' (1) | 2022.11.18 |
[์ค๋ธ์ ํธ] 5์ฅ '์ฑ ์ ํ ๋นํ๊ธฐ' (0) | 2022.11.11 |
๋๊ธ