Spring-study๐ฑ/Spring-Basic60 Section 3-2. ์๋ก์ด ํ ์ธ ์ ์ฑ ์ ์ฉ๊ณผ ๋ฌธ์ ์ ์์ฅ์์ ์ถ๊ฐํ ํ ์ธ ์ ์ฑ ์ ์ ์ฉํด๋ณด์. ๐ FixDiscountPolicy์์ RateDiscountPolicy๋ก ๋ฐ๊พธ์ด ์ฃผ์ด์ผํ๋ค. ๋ฌธ์ ์ ์ฐ๋ฆฌ๋ ์ญํ ๊ณผ ๊ตฌํ์ ์ถฉ์คํ๊ฒ ๋ถ๋ฆฌํ๋ค. OK ๋คํ์ฑ๋ ํ์ฉํ๊ณ , ์ธํฐํ์ด์ค์ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํ๋ค. OK OCP, DIP ๊ฐ์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น์ ์ถฉ์คํ ์ค์ํ๋ค. -> ๊ทธ๋ ๊ฒ ๋ณด์ด์ง๋ง ์ฌ์ค์ ์๋๋ค. DIP: ์ฃผ๋ฌธ์๋น์ค ํด๋ผ์ด์ธํธ( OrderServiceImpl )๋ DiscountPolicy ์ธํฐํ์ด์ค์ ์์กดํ๋ฉด์ DIP๋ฅผ์งํจ ๊ฒ ๊ฐ์๋ฐ? ํด๋์ค ์์กด๊ด๊ณ๋ฅผ ๋ถ์ํด ๋ณด์. ์ถ์(์ธํฐํ์ด์ค) ๋ฟ๋ง ์๋๋ผ ๊ตฌ์ฒด(๊ตฌํ) ํด๋์ค์๋ ์์กดํ๊ณ ์๋ค. ์ถ์(์ธํฐํ์ด์ค) ์์กด: DiscountPolicy ๊ตฌ์ฒด(๊ตฌํ) ํด๋์ค: FixDiscountPolicy , RateD.. 2022. 4. 2. Section 3-1. ์๋ก์ด ํ ์ธ ์ ์ฑ ๊ฐ๋ฐ ์๋ก์ด ํ ์ธ ์ ์ฑ ์ ํ์ฅํด๋ณด์. ๊ธฐ์กด ํ ์ธ ์ ์ฑ ์ ์ก ํ ์ธ ์ ์ฑ (๊ณ ์ ๊ธ์ก) : VIP ๋ฌด์กฐ๊ฑด 1000์ ํ ์ธ ์ ๋ฅ ํ ์ธ ์ ์ฑ (% ํ ์ธ)์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ = 10000์ ์ฃผ๋ฌธ์ 1000์ ํ ์ธ, 20000์ ์ฃผ๋ฌธ์ 2000์ ํ ์ธ ๊ธฐ์กด์ ํ ์ธ ์ ์ฑ ์ธํฐํ์ด์ค๊ฐ ์์ผ๋๊น ์ฐ๋ฆฌ๋ ์ ๋ฅ ํ ์ธ ์ ์ฑ ์ ๊ตฌํ์ฒด๋ง ๋ง๋ค์ด์ ๋ฐ๊พธ๊ธฐ๋ง ํ๋ฉด๋๋ค. 1. RateDiscountPolicy(์ ๋ฅ ํ ์ธ ์ ์ฑ ๊ตฌํ์ฒด ๋ง๋ค๊ธฐ) 2. RateDiscountPolicy ํ ์คํธ(์ ๋ฅ ํ ์ธ ์ ์ฑ ํ ์คํธ) ์๋ก์ด ํ์๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ํ ์ธ๊ธ์ก์ return ๋ฐ์ discount์ ์ ์ฅ Assertions๋ฅผ ์ฌ์ฉํ์ฌ 1000์์ธ์ง ๊ฒ์ฆ @DisplayName์ Junit5๋ถํฐ ์ง์ํ๋ ์ ๋ ธํ ์ด์ ์ผ๋ก ํ ์คํธ ๋ช ์ ์ง์ ํด์ค ์ ์๋ค. ํ ์คํธ ์ฑ.. 2022. 4. 2. Section 2-8. ์ฃผ๋ฌธ๊ณผ ํ ์ธ ๋๋ฉ์ธ ์คํ๊ณผ ํ ์คํธ 1. Java main ๋ฉ์๋๋ก ํ ์คํธ memberService์ join๋ฉ์๋๋ฅผ ํตํด ์๋ก์ด ํ์์ ๊ฐ์ ์ํด orderService๋ฅผ ํตํด ์๋ก์ด ์ฃผ๋ฌธ์ ์์ฑํ์ฌ order์๊ฒ ๋๊ฒจ์ค๋ค. ์ฃผ๋ฌธ์๋น์ค ๊ตฌํ์ฒด์์ ๋ฉค๋ฒ ๋ฑ๊ธ์ ํ์ธํด ํ ์ธ ๊ธ์ก๊น์ง ์๋ ค์ค๋ค. ํ ์คํธ ์ฑ๊ณต 2. Junit์ผ๋ก ํ ์คํธ memberService์ join๋ฉ์๋๋ฅผ ํตํด ์๋ก์ด ํ์์ ๊ฐ์ ์ํจ๋ค. orderService๋ฅผ ํตํด ์๋ก์ด ์ฃผ๋ฌธ์ ์์ฑํ์ฌ order์๊ฒ ๋๊ฒจ์ค๋ค. Assertions์ assertThat๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ธ ๊ฐ๊ฒฉ์ด 1000์์ด ๋ง๋์ง ๊ฒ์ฆ ์๋ก join๋ ํ์์ ๋ฑ๊ธ์ด vip์ด๋ฏ๋ก ํ ์ธ๊ฐ๊ฒฉ์ 1000์์ด์ด์ผํจ. ํ ์คํธ ์ฑ๊ณต 3. ์ ์ฒดํ ์คํธ ํ ์คํธ ์ฑ๊ณต 2022. 4. 1. Section 2-7. ์ฃผ๋ฌธ๊ณผ ํ ์ธ ๋๋ฉ์ธ ๊ฐ๋ฐ ํ ์ธ ์ ์ฑ ์ธํฐํ์ด์ค(์ญํ ) ์ ์ก ํ ์ธ ์ ์ฑ - ๊ณ ์ ๊ธ์ก ํ ์ธ(๊ตฌํ) ํ์ ๋ฑ๊ธ์ด VIP์ด๋ฉด ๊ณ ์ ๊ธ์ก(1000์)์ return ์ฃผ๋ฌธ ์ํฐํฐ ํ์ Id, ์ฃผ๋ฌธ ๋ฌผํ ์ด๋ฆ, ๋ฌผํ ๊ฐ๊ฒฉ, ํ ์ธ ๊ฐ๊ฒฉ ๊ฐ๊ฐ์ ์์ฑ์์ getter / setter๋ฅผ ๋ง๋ค์ด์ค ํ ์ธ๊ฐ๊ฒฉ์ด ์ ์ฉ๋ ๋ฌผํ์ ๊ฐ๊ฒฉ์ ๊ณ์ฐํ๊ธฐ ์ํ calculatePrice๋ฉ์๋ ์ฃผ๋ฌธ ์๋น์ค ์ธํฐํ์ด์ค(์ญํ ) ์ฃผ๋ฌธ ์์ฑ์ ํ์id, ์ํ๋ช , ์ํ๊ฐ๊ฒฉ์ parameter๋ก ๋ฐ์ ๋ค์ return ์์ผ์ผํ๋ ์ญํ ์ฃผ๋ฌธ ์๋น์ค๊ตฌํ์ฒด(๊ตฌํ) ์ฃผ๋ฌธ์์ฒญ์ด ๋ฐ์ํ๋ฉด id๋ฅผ ํตํด ํ์์ ๋ณด๋ฅผ ๊ฐ์ ธ์ด ์ด์ ๋ฐ๋ผ ํ ์ธ์ ์ ์ฉํ๊ณ ์๋ก์ด ์ฃผ๋ฌธ์ ์์ฑํ์ฌ return(ํ ์ธ ์ ์ฑ ์๋ค๊ฐ ํ์์ ๋๊ฒจ์ค) OrderService ์ ์ฅ์์๋ ํ ์ธ์ ๊ดํ ๊ฒ์ DiscountPolicy.. 2022. 4. 1. Section 2-6. ์ฃผ๋ฌธ๊ณผ ํ ์ธ ๋๋ฉ์ธ ์ค๊ณ ์ง๊ธ๋ถํฐ ํด๋์ค๋ ์ฌ๋ฌ ์์ฑํด์ผํ๊ณ ๋ณต์ก๋๊ฐ ์์ผ๋ ๊ณ ๋ฏผ์ด ํ์ํ๋ค. ์ฃผ๋ฌธ๊ณผ ํ ์ธ ์ ์ฑ ํ์์ ์ํ์ ์ฃผ๋ฌธํ ์ ์๋ค. ํ์ ๋ฑ๊ธ์ ๋ฐ๋ผ ํ ์ธ ์ ์ฑ ์ ์ ์ฉํ ์ ์๋ค. ํ ์ธ ์ ์ฑ ์ ๋ชจ๋ VIP๋ 1000์์ ํ ์ธํด์ฃผ๋ ๊ณ ์ ๊ธ์ก ํ ์ธ์ ์ ์ฉํด๋ฌ๋ผ. (๋์ค์ ๋ณ๊ฒฝ ๋ ์ ์๋ค.) ํ ์ธ ์ ์ฑ ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ํ์ฌ์ ๊ธฐ๋ณธ ํ ์ธ ์ ์ฑ ์ ์์ง ์ ํ์ง ๋ชปํ๊ณ , ์คํ ์ง์ ๊น์ง ๊ณ ๋ฏผ์ ๋ฏธ๋ฃจ๊ณ ์ถ๋ค. ์ต์ ์ ๊ฒฝ์ฐ ํ ์ธ์ ์ ์ฉํ์ง ์์ ์ ๋ ์๋ค. (๋ฏธํ์ ) ์ฃผ๋ฌธ ๋๋ฉ์ธ ํ๋ ฅ, ์ญํ , ์ฑ ์ 1. ์ฃผ๋ฌธ ์์ฑ: ํด๋ผ์ด์ธํธ๋ ์ฃผ๋ฌธ ์๋น์ค์ ์ฃผ๋ฌธ ์์ฑ์ ์์ฒญํ๋ค. 2. ํ์ ์กฐํ: ํ ์ธ์ ์ํด์๋ ํ์ ๋ฑ๊ธ์ด ํ์ํ๋ค. ๊ทธ๋์ ์ฃผ๋ฌธ ์๋น์ค๋ ํ์ ์ ์ฅ์์์ ํ์์ ์กฐํํ๋ค. 3. ํ ์ธ ์ ์ฉ: ์ฃผ๋ฌธ ์๋น์ค๋ ํ์ ๋ฑ๊ธ์ .. 2022. 4. 1. ์ด์ 1 ยทยทยท 7 8 9 10 11 12 ๋ค์