์๋ ํ๋ฆฌ์ฝ์ค๋ ์ฝ ํ ๋ฌ ์ ์ ๋ง๋ฌด๋ฆฌ๋์์ง๋ง, ํ๋ฆฌ์ฝ์ค๊ฐ ๋๋ ์ดํ ๋ฐ๋ ค์๋ ๊ฐ์ข ํํ๊ณผ ๊ธฐ๋ง๊ณ ์ฌ๋ก ์ธํ์ฌ ๋ค๋ฆ๊ฒ ๊ธ์ ์์ฑํ๊ฒ ๋์๋ค.
4์ฃผ์ฐจ๋ ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๊ฒ์์ ๊ตฌํํ๋ ๊ฒ์ด์๋๋ฐ, ๊ฒ์์ ๋ฃฐ์ด ์ค์ง์ด ๊ฒ์์์ ๋์ค๋ ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๊ฒ์๊ณผ ๊ฐ์์ ๊ธ๋ฐฉ ์ดํดํ ์ ์์๋ค.
ํ์ง๋ง ๋ง์ง๋ง ์ฃผ์ฐจ๋ต๊ฒ ์๊ตฌ์ฌํญ๋ ๋ง์๊ณ , ํนํ MVC ํจํด์ ์ ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ผ๋ ์๋๊ฐ ๋๋ฌ๋์์ด ๋ ๊น๋ค๋ก์ ๋ค.
๋ฐฐ์ ๋ ์
ํ์ธ, ๋ ํ์ธ
์ฒ์์ ๊ตฌํ์ ์์ํ๊ธฐ ์ , ๊ตฌํํด์ผ ํ ๊ธฐ๋ฅ๊ณผ ์๊ตฌ์ฌํญ์ ๋ฆฌ๋๋ฏธ ํ์ผ์ ์ ๋ฆฌ๋ฅผ ํ์๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ์ค์ํ ๊ธฐ๋ฅ์ ๋นผ๋จน์ ์ฑ ๊ตฌํ์ ํ๋ค. (์ฒ์ ์ ๋ฆฌ๋ฅผ ํ ๋ ๋์น ๊ฒ์ด์๋ค...)
๊ทธ๋๋ง ์ด๋ฐ์ ๋ฐ๊ฒฌ์ ํด์ ๋ง์ ์ด์ง ์ ์ถํ ๋ค์ ๋ฐ๊ฒฌํ์ผ๋ฉด ์ ๋ง ํฐ์ผ ๋ ๋ปํ๋ค.
๋์น ์ฌํญ์ด ์๋์ง ์ ๋ง ๊ผผ๊ผผํ๊ฒ ํ์ธํด์ผ๊ฒ ๋ค๋ ๊ตํ์ ์ป์ ์ ์์๋ค.
MVC ํจํด
์ด์ ์ MVC ํจํด์ ๋ง๋ณด๊ธฐ ์์ผ๋ก ์ ํด๋ณธ ์ ์ ์์๋๋ฐ, ์ค์ ๋ก ๋ด๊ฐ ์ฒ์๋ถํฐ ํด๋น ํจํด์ ์ ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ฒ์์ด์๋ค. ๊ทธ๋์ ๊ทธ๋ฐ์ง ๊ตฌํํ๋ ๊ณผ์ ์์ ์ฝ๋๋ฅผ ์ผ๋ค ์ง์ ๋ค๋ฅผ ๋ฐ๋ณตํ๋ ๋ฐ๋์ ์ด์ ์ฃผ์ฐจ๋ณด๋ค ํจ์ฌ ์ค๋ ์๊ฐ์ด ์์๋์๋ค.
model, view, controller ๊ฐ ์ฐ๊ฒฐ ๊ด๊ณ๋ ์ ๊ฒฝ ์จ์ผ ํ๊ณ , ๊ตฌํํ๋ ค๋ ๋ก์ง์ด ๋ค์ด๊ฐ์ผ ํ๋ ์์น๋ ์ ๋งค๋ชจํธํด์ ์ฝ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ๊ฐ์์์๋ค. ์์ง ๋์์ธ ํจํด์ ๋ํด์ ๊ณต๋ถํ ๊ฒ์ด ๋ง์ง๋ง, ๊ฐ์ ์ญํ ์ ๋ฐ๋ผ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ตฌํ์ ํ๋๊น ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์์๋ณด๊ธฐ๋ ๋ ์ฌ์ด ์ฅ์ ์ด ์๋ ๊ฒ ๊ฐ๋ค.
ํ ์คํธ Input ํ๋ผ๋ฏธํฐํ
ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋, ์ฌ๋ฌ ๊ฐ์ ์
๋ ฅ ๊ฐ์ ํ
์คํธํ๋ ์ํฉ์ธ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์๋ ์ด๋
ธํ
์ด์
์ ๋ํด ์์๊ฐ ์ ์์๋ค.
์๋ฅผ ๋ค์ด ์ ํจํ ๋ฒ์ ๋ด ์ซ์๋ฅผ ์
๋ ฅํ๋ฉด ํต๊ณผ๋๋ ํ
์คํธ๋ฅผ ์์ฑํ๋ค๊ณ ํ์ ๋, ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
@DisplayName("์ ํจํ ๋ฒ์ ๋ด ์ซ์๋ฅผ ์
๋ ฅํ๋ฉด ํด๋น ๊ธธ์ด๋ฅผ ๊ฐ์ง ๋ค๋ฆฌ๋ฅผ ์์ฑํ๋ค.")
@ValueSource(ints = {3, 10, 20})
@ParameterizedTest
void successGetBridge(int bridgeSize) {
assertThat(bridgeMaker.makeBridge(bridgeSize))
.isInstanceOf(List.class);
}
๊ธฐ์กด์๋ ํ๋์ ์ซ์๋ง ๋ฃ์ ์ฑ๋ก ์ฝ๋๋ฅผ ์ ์ถํ๋๋ฐ, ์ซ์๋ฅผ ์ธ์๋ก ๋ฐ์์ ๋ฃ์ผ๋ ์ฌ๋ฌ ์ซ์๋ฅผ ํ
์คํธํ์์ ๋ณด์ผ ์ ์์ด ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค.
๊ณ ๋ฏผํ๋ ๋ถ๋ถ
Model / View / Controller ์ค ์ด๋?
ํน์ ๋ก์ง์ ์ด๋ ์ญํ ์ ๋ฃ์ด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋ง์๋ค. MVC ํจํด์ ๊ฐ๋
์ด ๋ญ์ง ์ฝ๊ธฐ๋ง ํ์ ๋๋ ๊ทธ๋ ๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ๋๋ฐ, ๋ง์ ๊ท์น์ ์งํค๋ ค๊ณ ํ๋ค ๋ณด๋ ์ฌ๊ธฐ์ ๋ค์ด๊ฐ๋ ๊ฒ์ด ๋ง๋๋ผ๋ ์๊ฐ์ด ์๊พธ๋ง ๋ค์๋ค.
๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ๋ํ์ ์ผ๋ก 5๊ฐ๊ฐ ์๋ ๋ฏํ๋ค.
- Model์ Controller์ View์ ์์กดํ์ง ์์์ผ ํ๋ค.
- View๋ Model์๋ง ์์กดํด์ผ ํ๊ณ , Controller์๋ ์์กดํ๋ฉด ์ ๋๋ค.
- View๊ฐ Model๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋๋ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ ๋ฐ์ดํฐ์ ๋ํด์๋ง ๋ฐ์์ผ ํ๋ค.
- Controller๋ Model๊ณผ View์ ์์กดํด๋ ๋๋ค.
- View๊ฐ Model๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋, ๋ฐ๋์ Controller์์ ๋ฐ์์ผ ํ๋ค.
ํ๋ฆฌ์ฝ์ค ๊ธฐ๊ฐ ๋์์ ๊ตฌํ์ด ์ฐ์ ์ ๋๋ค ๋ณด๋ MVC ํจํด์ ๋ํด ๊น๊ฒ ๊ณต๋ถํ์ง ๋ชปํ๋๋ฐ, ์ด๋ฌํ ๊ท์น์ด ์๊ธด ์ด์ ์ ๋ํด์ ๊ณ ๋ฏผํด๋ณด์์ผ๊ฒ ๋ค.
ํ๋ก์ ํธ ์ฝ๋์ ํ ์คํธ ์ฝ๋
๋ฉ์ธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ ๋ค ๊ทธ์ ๋ฐ๋ฅธ ํ
์คํธ ์ฝ๋๋ฅผ ์ดํ์ ์์ฑํ๋๋ฐ, ๊ทธ๋ฌ๋ค ๋ณด๋ฉด ๋ง๋ฅ๋จ๋ฆฌ๋ ๊ณ ๋ฏผ์ด ์๊ธด๋ค.
๊ธฐ๋ฅ์ ํ
์คํธํด์ผ ํ๋๋ฐ ํ
์คํธ ์ฝ๋๋ก ์ด๋ป๊ฒ ์์ฑํด์ผ ํ ์ง ์ ๋งคํ.. ๊ทธ๋ฐ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋๋ฐ, ๊ฒฐ๊ตญ ํ
์คํธ ์ฝ๋๋ฅผ ์ ๊ตฌํํ๊ธฐ ์ํด์ ๋ฆฌํฉํ ๋ง์ ๊ฑฐ์น๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค.์ฒ์์ ์ค๊ณ๋ฅผ ์๋ชปํ ํ์ด๊ฒ ์ง๋ง, ์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์น๋ค ๋ณด๋ ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ๋ก ์ด ์ ๋์ค๊ฒ ๋์๋์ง ์ดํด๊ฐ ๊ฐ๋ ์ฌ์ ์ด์๋ค.
+) 1์ฐจ ๋ถํฉ๊ฒฉ
๊ทธ๋ ๊ฒ ํ๋ฆฌ์ฝ์ค ๊ธฐ๊ฐ์ด ๋ง๋ฌด๋ฆฌ๊ฐ ๋๊ณ 12์ 14์ผ์ 1์ฐจ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค.
์๋ ๊ฒฝ์๋ฅ ์ด ๋์๊ณ , ์ค๋ ฅ์๋ค์ด ๋ง์ ๋ณด์๊ธฐ ๋๋ฌธ์ ํฐ ๊ธฐ๋๋ฅผ ํ์ง๋ ์์๋๋ฐ ๋ง์ ๋ถํฉ๊ฒฉ ์์์ ์ง์ ์ ํ๋ ์์ํ ๋ง์์ ์ด์ฉ ์ ์์๋ค.
๋๋ฌด ๋ถ๋ฌ์ ์ง๋ง ์ฌ๋ฌ ๋ฒ์ ๋์ ๋์ ํฉ๊ฒฉํ์ ๋ถ์ด ๋ง์ด ๊ณ์
จ๊ณ ๋๋ ์ด๋ฒ์ด ์ฒซ ๋์ ์ด๋๊น ๋ถ์กฑํ ์ ์ ๋ณด์ํด์ ๋ค์ ๋์ ํด๋ณด๋ ค๊ณ ํ๋ค.
๋น๋ก ํฉ๊ฒฉํ์ง๋ ๋ชปํ์ง๋ง, ์ฝ ํ ๋ฌ๊ฐ ๋ง์ ๊ฒ์ ๋ฐฐ์ ๊ณ ๊ฐ์ ๋ถ์ผ๋ฅผ ๊ฟ๊พธ๋ ์ฐธ๊ฐ์๋ถ๋ค๊ณผ ํจ๊ปํ ์ ์์ด์ ์ ๋ง ์ข์ ๊ธฐํ์๋ค๋ ์๊ฐ์ด ๋ ๋ค.
'ํ๊ณ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐํ ์ฝ] ํ๋ฆฌ์ฝ์ค 3์ฃผ์ฐจ (0) | 2022.11.15 |
---|---|
[์ฐํ ์ฝ] ํ๋ฆฌ์ฝ์ค 2์ฃผ์ฐจ (0) | 2022.11.14 |
[์ฐํ ์ฝ] ํ๋ฆฌ์ฝ์ค 1์ฃผ์ฐจ (0) | 2022.11.14 |
[SAVE] ํ๋ก์ ํธ ํ๊ณ (0) | 2022.08.20 |