๐ Chapter 22: ๋ณต์กํ ํ ์คํธ ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ
- ํ ์คํธ์์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ถ์ ๋๋ง๋ค ์์ฑ์ ์ธ์๋ฅผ ๋ชจ๋ ์ง์ ์ ๊ณตํด์ผ๋ง ํ๋ค.
@Test public void chargesCustomerForTotalCostOfAllOrderedItems() {
Order order = new Order(
new Customer("Sherlock Holmes",
new Address("221b Baker Street", "London",
new PostCode("MW1", "3RX"))));
order.addLine(new OrderLine("Deerstalker Hat", 1));
order.addLine(new OrderLie("Tweed Cape", 1));
}
- ์ด ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ ํ ์คํธ ๋์์ด ๋๋ ํ์์ ๊ธฐ์ฌํ์ง ์๋ ์ ๋ณด๋ก ํ ์คํธ๋ฅผ ์ฑ์ ๋ฃ์ด ํ ์คํธ๊ฐ ์ฝ๊ธฐ ์ด๋ ค์์ง๋ค. ๊ฒ๋ค๊ฐ ์์ฑ์ ์ธ์๋ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ ๋ ์ฌ๋ฌ ํ ์คํธ๊ฐ ๊นจ์ง ๊ฒ์ด๋ฏ๋ก ํ ์คํธ๊ฐ ๋ถ์์ ํด์ง๋ค.
- ๊ฐ์ฒด ๋ชจ์ฒด ํจํด์ ์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ํ ๊ฐ์ง ์๋์ ํด๋นํ๋ค. ๊ฐ์ฒด ๋ชจ์ฒด๋ ํ ์คํธ์์ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฌ๋ฌ ํฉํฐ๋ฆฌ ๋ฉ์๋๊ฐ ๋ด๊ธด ํด๋์ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- ๊ฐ์ฒด ๋ชจ์ฒด๋ ์ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ์ฝ๋๋ฅผ ๋ฌถ๊ณ ๊ฑฐ๊ธฐ์ ์ด๋ฆ์ ๋ถ์ฌํจ์ผ๋ก์จ ํ ์คํธ์ ๊ฐ๋ ์ฑ์ ๋์ธ๋ค. ๊ทธ๋ฟ ๋ง์๋๋ผ ๊ฐ์ฒด ๋ชจ์ฒด์ ๊ธฐ๋ฅ์ ํ ์คํธ ์ฌ์ด์์ ์ฌ์ฌ์ฉํ ์ ์์ด ์ ์ง ๋ณด์์๋ ๋์์ด ๋๋ค.
- ํํธ์ผ๋ก๋ ๊ฐ์ฒด ๋ชจ์ฒด ํจํด์ ํ ์คํธ ๋ฐ์ดํฐ๊ฐ ๋ณํ๋๋ฉด ์ ๋์ฒํ์ง ๋ชปํ๊ณ ์ฌ์ํ ์ฐจ์ด๊ฐ ์์ ๋๋ง๋ค ์๋ก์ด ํฉํฐ๋ฆฌ ๋ฉ์๋๊ฐ ํ์ํ ๋ค. ๋๋ฌธ์ ์๊ฐ์ด ์ง๋๋ฉด ๊ฐ์ฒด ๋ชจ์ฒด ์์ฒด๊ฐ ์ค๋ณต๋ ์ฝ๋๋ก ๊ฐ๋ ์ฐจ๊ฑฐ๋ ๋ฌด์ํ ๋ง์ ๋ฏธ์ธ ๋ฉ์๋๋ก ๋ฆฌํฉํฐ๋ง๋์ด ์ง์ํ๊ธฐ๊ฐ ๋๋ฌด ์ด๋ ค์์ง์ง๋ ๋ชจ๋ฅธ๋ค.
๐ ํ ์คํธ ๋ฐ์ดํฐ ๋น๋โ
- ๋น๋ ํจํด์ ์ด์ฉํด ํ ์คํธ์์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค. ๋ณต์กํ ์ค๋น๊ฐ ํ์ํ ํด๋์ค์ ๊ฒฝ์ฐ ์์ฑ์์ ๊ฐ ๋งค๊ฐ๋ณ์์ ๋์๋๋ ํ๋๊ฐ ํฌํจ๋ ํ ์คํธ ๋ฐ์ดํฐ ๋น๋๋ฅผ ๋ง๋ ๋ค.
- ๋น๋์๋ ํ๋์ ๊ฐ์ ๋ฎ์ด์ฐ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฐ๊ฒฐ ๊ฐ๋ฅํ ๊ณต์ฉ ๋ฉ์๋๊ฐ ์์ผ๋ฉฐ, ๊ด๋ก์ ๋ง์ง๋ง์
build()
๋ฉ์๋๋ฅผ ํธ์ถํด ํ๋ ๊ฐ์ ํ ๋๋ก ๋์ ๊ฐ์ฒด์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด๋ธ๋ค. - ์ด๋ ๊ฒ ํ๋ฉด ํ
์คํธ์ ์์ ๊ฒฐ๊ณผ์ ๊ด๋ จ์ด ์๋ ๊ฐ๋ง ํฌํจ๋์ด ํ
์คํธ ํํ๋ ฅ์ด ๋์์ง๋ค. ๋ํ ๋ณํ์ ํ๋ ฅ์ ์ผ๋ก ๋์ํ ์ ์๋ค.
- ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ฌธ๋ฒ์ ์ผ๋ก ์ง์ ๋ถํ ๋ถ๋ถ์ ๋๋ถ๋ถ ๊ฐ๋ ค์ค๋ค.
- ๊ธฐ๋ณธ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ๋จ์ํ๊ฒ ํ๊ณ ํน๋ณํ ๊ฒฝ์ฐ๋ผ๋ ๊ทธ๋ฆฌ ๋ณต์กํ๊ฒ ๋ง๋ค์ง ์๋๋ค.
- ํ ์คํธ ๊ฐ์ฒด์ ๊ตฌ์กฐ์ ์ธ ๋ณํ๋ก๋ถํฐ ํ ์คํธ๋ฅผ ๋ค์ ํ ๋ฒ ๋ณดํธํ๋ค. ์์ฑ์์ ์ธ์๋ฅผ ์ถ๊ฐํ๋ค๋ฉด, ์ ์ธ์๊ฐ ํ์ํ๋ ๋ถ๋ถ๊ณผ ๊ด๋ จ๋ ๋น๋์ ํ ์คํธ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
- ์ฝ๊ธฐ ์ฝ๊ณ ์ค๋ฅ๋ฅผ ์ฐพ๊ธฐ ์ฌ์ด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค. ๊ฐ ๋น๋ ๋ฉ์๋๊ฐ ํด๋น ๋งค๊ฐ๋ณ์์ ์ฉ๋๋ฅผ ๋ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.