๐ Chapter 6: ๊ฐ์ฒด ์งํฅ ์คํ์ผ
๐ ์ ์ง ๋ณด์์ฑ์ ๊ณ ๋ คํ ์ค๊ณโ
- ์ฝ๋ ๊ท๋ชจ๊ฐ ์ปค์ง ๊ฒฝ์ฐ ํด๋น ์ฝ๋๋ฅผ ๊ณ์ํด์ ์ดํดํ๊ณ ์ ์ง ๋ณด์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ฅ์ ๊ฐ์ฒด๋ก, ๊ฐ์ฒด๋ฅผ ํจํค์ง๋ก, ํจํค์ง๋ฅผ ํ๋ก๊ทธ๋จ์ผ๋ก, ํ๋ก๊ทธ๋จ์ ์์คํ ์ผ๋ก ๊ตฌ์กฐํํ๋ ๊ฒ๋ฐ์ ์๋ค.
๐ถ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌโ
- ์์คํ ๋์ ๋ฐฉ์์ ๋ณ๊ฒฝํด์ผ ํ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ๋๋๋ก ์ ์ ์์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ ํ๋ค. ๊ด๋ จ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๋ถ ์ฝ๋์ ์ด๋ ํ๊ตฐ๋ฐ์ ๋ค์ด ์๋ค๋ฉด ์์ ์ ์๋ฃํ๊ณ ์ ์์คํ ์ฌ๋ฌ ๊ณณ์ ๋ณ๊ฒฝํ์ง ์์๋ ๋๋ค. ๊ทธ๋ฌ๋ ์์คํ ์์ ์ด๋ ๋ถ๋ถ์ ๋ณ๊ฒฝํด์ผ ํ ์ง ์์ธกํ์ง ๋ชปํ๋ฏ๋ก ๊ฐ์ ์ด์ ๋ก ๋ณ๊ฒฝํด์ผ ํ ์ฝ๋๋ ํ๋ฐ ๋ชจ์๋ค.
๐ถ ๋ ๋์ ์์ค์ ์ถ์ํโ
- ๋ ๋์ ์์ค์ ์ถ์ํ๋ฅผ ํ์ฉํด ๋ณต์ก์ฑ์ ํผํ๋ค.
- ๋ณ์์ ์ ์ด ํ๋ฆ์ ์กฐ์ํ๊ธฐ๋ณด๋ค๋ ์ ์ฉํ ๊ธฐ๋ฅ ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ๋ ์์ผ๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด ๋ ๋ง์ ์ผ์ ํด๋ผ ์ ์๋ค.
- ์ ๋ ๊ฐ์ง๋ฅผ ์ผ๊ด๋๊ฒ ์ ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๊ฐ ์ฝ๋ฒ์ ํฌํธ์ ์ด๋ํฐ ์ํคํ ์ฒ ๊ฐ์ ๊ฒ์ผ๋ก ๋์๊ฐ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ํฌํธ์ ์ด๋ํฐ๋ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ์ฝ๋๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ฐ์ ๊ธฐ์ ๊ธฐ๋ฐ ๊ตฌ์กฐ์ ์์กด์ฑ๊ณผ ๊ฒฉ๋ฆฌ๋ ์ํคํ ์ฒ๋ฅผ ์๋ฏธํ๋ค.
- ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํ ์ ์๊ฒ๋ ์ธํฐํ์ด์ค๋ฅผ ๋์ ๋์ ๋ฐฉ์์์ ์ ์ ์ ์ด๋ป๊ฒ ์ฐพ์๊น?
- ์บก์ํ: ์๋ก ๊ด๋ จ์ด ์๋ ์ปดํฌ๋ํธ ๊ฐ์ ์์์น ๋ชปํ ์์กด์ฑ์ด ์์์ ๋ณด์ฅํจ์ผ๋ก์จ ํ ๊ฐ์ฒด์ ๋ํ ๋ณ๊ฒฝ์ฌํญ์ด ์์คํ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ผ๋ง๋ ์ํฅ์ ์ค์ง ํต์ ํ ์ ์๋ค. ๊ฐ์ฒด์ ํ์๊ฐ ํด๋น ๊ฐ์ฒด์ API๋ฅผ ํตํด์๋ง ์ข์ฐ๋ ์ ์์์ ๋ณด์ฅํ๋ค.
- ์ ๋ณด ์๋: ๊ฐ์ฒด๊ฐ ํด๋น ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ถ์ํ๋ API ๋๋จธ๋ก ๊ฐ์ถ๋ค. ์ ๋ณด ์๋์ ํตํด ๋น๋ฉดํ ๊ณผ์ ์ ๊ด๋ จ์ด ์๋ ๋ฎ์ ์์ค์ ์ธ๋ถ ์ฌํญ์ ์ ํ์ ์์ด ๋ ๋์ ์์ค์ ์ถ์ํ๋ฅผ ํ์ฉํ ์ ์๋ค.
๐ ๋ด๋ถ ๋ ์ด์โ
- ์์คํ ์ ๊ตฌ์ฑํ ๋๋ ๊ฐ ๊ฐ์ฒด์ ์ํ์ผ๋ก ๋ฌด์์ ๋์ง ๊ฒฐ์ ํด ํด๋น ๊ฐ์ฒด๊ฐ ๋ช ํํ API์ ํจ๊ป ์์ง๋ ฅ ์๋ ์ถ์ํ๋ฅผ ์ ๊ณตํ๊ฒ ํด์ผ ํ๋ค.
- ๊ฐ์ฒด์์ ์ค์ํ ๊ฒ์ API๋ฅผ ํตํด ํด๋น ๊ฐ์ฒด์ ๋ด๋ถ์ ์ ๊ทผํ๋ ๊ฒ์ ์บก์ํํ๊ณ , ์ธ๋ถ ์ฌํญ์ ์์คํ์ ๋๋จธ์ง ๋ถ๋ถ์ผ๋ก๋ถํฐ ๊ฐ์ถ๋ ๊ฒ์ด๋ค. ์์คํ ์์ ํ ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์์ฌ์ํตํ๋ค. ํ ๊ฐ์ฒด์ ์ง์ ์์ฌ์ํตํ๋ ๊ฐ์ฒด๋ฅผ ํด๋น ๊ฐ์ฒด์ ์ด์(peer)๋ผ๊ณ ํ๋ค.
- API๋ฅผ ํตํด ๊ฐ์ฒด ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋๋ฌด ๋ง์ด ๋ ธ์ถํ๋ฉด ํด๋ผ์ด์ธํธ์์๋ ํด๋น API๋ฅผ ์ผ๋ง๊ฐ ์ ๋ฌด์ ํ์ฉํ ๊ฒ์ด๊ณ ๊ฐ์ฒด์ ๋์ ๋ฐฉ์์ด ๋๋ฌด ๋ง์ ๊ฐ์ฒด์ ๋๋ฆฌ ํผ์ง ํ ๊ณ ๊ฒฐํฉ๋๊ฐ ๋์์ง ๊ฒ์ด๋ฉฐ ์ด์ ๋ฌด์์ ๋ณ๊ฒฝํ๋ ์ฝ๋ ์ ์ฒด์ ๊ทธ๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ํจ๊ณผ๊ฐ ํผ์ ธ ์ ์ง ๋ณด์ ๋น์ฉ์ด ์ฆ๊ฐํ ๊ฒ์ด๋ค.
๐ ๋จ์ผ ์ฑ ์ ์์นโ
- ๋ชจ๋ ๊ฐ์ฒด๋ ๋ฐ๋์ ๋จ ํ ๊ฐ์ง ๋ช ํํ ๊ท์ ๋ ์ฑ ์์ ์ง๋ ์ผ ํ๋ค.
- ์ด๋ค ๊ฐ์ฒด์ ์ญํ ์ ์ค๋ช ํ๋ ๋ฐ ์ ์ ์ง์ด๋ฃ๋๋ค๋ฉด ์๋ง ํด๋น ๊ฐ์ฒด๋ ๋ณดํต ๊ฐ ์ ๋ง๋ค ํ๋์ฉ ์ฌ๋ฌ ๊ฐ์ ํ๋ ฅ ๊ฐ์ฒด๋ก ๋๋ ๊ฒ์ด๋ค.
๐ ๊ฐ์ฒด ์ด์์ ์ ํโ
- ์ฐ๋ฆฌ๋ ์ด์ํ๋ ๊ฐ์ฒด์์ ๊ด๊ณ๋ฅผ ๋๋ต ์ธ ๊ฐ์ง ์ ํ์ผ๋ก ๋๋๋ค. ํ ๊ฐ์ฒด๊ฐ ์ง๋ ์ ์๋ ๊ด๊ณ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๐ถ ์์กด์ฑโ
- ํ ๊ฐ์ฒด๊ฐ ์์ ์ ์ญํ ์ ์ํํ ์ ์๊ฒ ์ด์ํ๋ ๊ฐ์ฒด์๊ฒ ์๊ตฌํ๋ ์๋น์ค๋ค.
- ํด๋น ๊ฐ์ฒด๋ ์ด ์๋น์ค ์์ด๋ ๊ธฐ๋ฅ์ ์ํํ์ง ๋ชปํ๋ฉฐ, ๊ฐ์ฒด ์์ฒด๋ฅผ ์์ฑํ ์ ์์ ๊ฒ์ด๋ค.
๐ถ ์๋ฆผโ
- ํ ๊ฐ์ฒด์ ์ต๊ทผ ํ๋์ ์ง์์ ์ผ๋ก ํ์ ํ๋ ์ด์์ด๋ค. ํด๋น ๊ฐ์ฒด๋ ์ํ๊ฐ ๋ฐ๋๊ฑฐ๋ ์ค์ํ ํ๋์ ์ํํ ๋๋ง๋ค ํน์ ์ด์์๊ฒ ์ด๋ฌํ ์ฌ์ค์ ์๋ฆฐ๋ค.
- ๊ฐ์ฒด๋ ์ด๋ค ์ด์์ด ์์ ์๊ฒ ๊ท๋ฅผ ๊ธฐ์ธ์ด๊ณ ์๋์ง ๋ชจ๋ฅด๊ฑฐ๋ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค. ์๋ฆผ์ด ์ ์ฉํ ๊น๋ญ์ ๊ฐ์ฒด๋ฅผ ์๋ก ๋ถ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
๐ถ ์กฐ์ โ
- ๊ฐ์ฒด์ ํ์๋ฅผ ๋ ๋์ ์์คํ ์ ์๊ฑด์ ๋ง๊ฒ ์กฐ์ ํ๋ ์ด์์ด๋ค. ์ฌ๊ธฐ์๋ ํด๋น ๊ฐ์ฒด๋ฅผ ๋์ ํด ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์ ์ฑ ๊ฐ์ฒด์ ๊ฐ์ฒด๊ฐ ๋ณตํฉ์ฒด์ธ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ฒด์ ์ปดํฌ๋ํธ ๋ถ๋ถ์ด ํฌํจ๋๋ค.
๐ถ ์ ๋ฆฌโ
- ์ด๋ฌํ ๊ฐ์ฒด ์ด์ญ์ ์ ํ์ ์ค๊ณ์ ๊ด๋ จ๋ ๊ณ ๋ฏผ์ ๋์์ ์ฃผ๋ ํด๋ฆฌ์คํฑ์ ๋ถ๊ณผํ ๋ฟ ๋ฐ๋์ ์ง์ผ์ผ ํ ๋ฒ์น์ ์๋๋ค. ๋ฌด์๋ณด๋ค ์ค์ํ ๊ฒ์ ๋ฐ๋ก ํ๋ ฅ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋๋ ๋งฅ๋ฝ์ด๋ค.
๐ ์ ์ฒด๋ ๋ถ๋ถ์ ํฉ๋ณด๋ค ๋จ์ํด์ผ ํ๋คโ
- ๋ณตํฉ ๊ฐ์ฒด์ API๋ ๋ฐ๋์ ๊ตฌ์ฑ ์์์ ์กด์ฌ์ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ํธ ์์ฉ์ ๊ฐ์ถ๊ณ ๋ ๋จ์ํ ์ถ์ํ๋ฅผ ์ด์์๊ฒ ๋๋ฌ๋ด์ผ ํ๋ค.
// ํ์ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ์ ์ด
moneyEditor.getAmountField().setText(String.valueOf(money.amount()));
moneyEditor.getCurrencyField().setText(money.currencyCode());
// ์ฌ์ ํ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ๋๋ฌ๋๋ค.
moneyEditor.setAmountField(money.amount());
moneyEditor.setCurrencyField(money.currencyCode());
// ๋ช
์์ ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ด๋ฆฌ
moneyEditor.setValue(money);
- ์ฝ๋ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์ ์ฒด๋ ๋ถ๋ถ์ ํฉ๋ณด๋ค ๋จ์ํด์ผ ํ๋ค๋ ๊ท์น์ด ์ถ์ํ ์์ค์ ๋์ด๋ ๋ฐ ์ด๋ฐ์งํ ๊ฒ์ด๋ค.
๐ ์ฝํ ์คํธ ๋ ๋ฆฝ์ฑโ
- ์ฝํ ์คํธ ๋ ๋ฆฝ์ฑ์ ํ ๊ฐ์ฒด๊ฐ ์ ๋ณด๋ฅผ ๋๋ฌด ๋ง์ด ๊ฐ์ท๊ฑฐ๋ ์๋ชป๋ ์ ๋ณด๋ฅผ ๊ฐ์ท๋์ง ํ๋จํ๋ ๋ฐ ์ ์ฉํ๋ค.
- ์์คํ ์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด๊ฐ ์ฝํ ์คํธ ๋ ๋ฆฝ์ ์ด๋ผ๋ฉด ํด๋น ์์คํ ์ ๋ณ๊ฒฝํ๊ธฐ๊ฐ ์ฝ๋ค. ์ฌ๊ธฐ์ ์ฝํ ์คํธ ๋ ๋ฆฝ์ ์ด๋ผ๋ ๋ง์ ๊ฐ ๊ฐ์ฒด๊ฐ ํด๋น ๊ฐ์ฒด๋ฅผ ์คํํ๋ ์์คํ ์ ๊ดํด ์๋ฌด๊ฒ๋ ์์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
- ์ฝํ ์คํธ ํก๋ฆฝ์ ์ด๋ ค๋ฉด ์ด๋ค ๊ฐ์ฒด๊ฐ ์คํ๋๊ณ ์๋, ๊ท๋ชจ๊ฐ ๋ ํฐ ํ๊ฒฝ์ ๋ํด ํด๋น ๊ฐ์ฒด๊ฐ ์์์ผ ํ ์ฌํญ์ ์ ๋ถ ์ ๋ฌํด์ผ ํ๋ค.
- ์ด์ฒ๋ผ ๊ฐ๋ถ์ฅ์ ์ธ ์ ๊ทผ๋ฒ์์๋ ๊ฐ ๊ฐ์ฒด๋ ์๊ธฐ ์ญํ ์ ์ํํ๋ ๋ฐ ํ์ํ ๋งํผ ์ ๋ณด๋ฅผ ์ ๋ฌ๋ฐ๊ณ ๊ทธ๋ฌํ ์ญํ ํํ๊ณผ ๋ถํฉํ๋ ์ถ์ํ์ ํฌํจ๋๋ค. ๊ฒฐ๊ตญ ๊ฐ์ฒด ์ฌ์ฌ์ด ํ๋ก์ธ์ค ๊ฒฝ๊ณ, ์ฆ ์์คํ ์ด ํธ์คํธ ์ด๋ฆ์ด๋ ํฌํธ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ด๋ฒคํธ ๊ฐ์ ์ธ๋ถ์ ์ธ ์ธ๋ถ ์ฌํญ์ ๋ฐ๊ฒฌํ๊ฒ ๋๋ ๊ณณ๊น์ง ์ด๋ฅด๊ฒ ๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋ ์์คํ ์์ ์ฝํ ์คํธ ๋ ๋ฆฝ์ฑ ๊ท์น์ ํจ๊ณผ๋ ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ง๋ค๊ณ ๊ฐ์ฒด ์์ฒด์๋ ๋ณ๋๋ก ์ ์๋๊ฒ ๋ง๋ ๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๊ฐ์ฒด๊ฐ ๋จ์ํด์ง๋๋ฐ, ๊ฐ์ฒด๊ฐ ์์ ์ ๊ด๊ณ๋ฅผ ์ง์ ๊ด๋ฆฌํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ฝํ ์คํธ ๋ ๋ฆฝ์ฑ์ ๋ฐ๋ฅด๋ฉด ๋ค์ํ ์ฝํ ์คํธ์ ์ ์ฉํ ์ ์๋ ์์ง๋ ฅ ์๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๊ณ ๊ฐ์ฒด ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ์ฌ์ค์ ํด์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์์คํ ์ผ๋ก ๋์๊ฐ ์ ์๋ค.
๐ ์ฌ๋ฐ๋ฅธ ์ ๋ณด ๊ฐ์ถ๊ธฐโ
- ์บก์ํ๋ ๊ฑฐ์ ๋ ํ๋ฉด ์ข๊ธด ํ์ง๋ง ๋๋ก๋ ์ ๋ณด๋ฅผ ์๋ชป๋ ๊ณณ์ ๊ฐ์ถ๋ ์ผ์ด ์๊ธธ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ์ฝ๋๋ฅผ ์ดํดํ๊ฑฐ๋ ํตํฉํ๊ธฐ๊ฐ ํ๋ค์ด์ง๊ณ , ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ์์ผ๋ก ํ์๋ฅผ ๋ง๋ค์ด๋ด๊ธฐ๋ ์ด๋ ค์์ง๋ค.
- ์ด๋ฅผ ๋ฐฉ์งํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ค๊ณ ๋ ผ์ ์ ๋ ๊ฐ์ง ๊ฐ๋ ์ ์ฐจ์ด์ ์ ๋ถ๋ช ํ๊ฒ ์ธ์ํด์ผ ํ๋ค. ์ด๋ฅผํ ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๋งํ๊ธฐ๋ ํ๋ค.
- ์บ์์ ๋ํ ์๋ฃ ๊ตฌ์กฐ๋ฅผ
CachingAuctionLoader
ํด๋์ค์ ์บก์ํํ๋ค.- ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ ํ์ผ์ ์ด๋ฆ์
PricingPolicy
ํด๋์ค์ ์บก์ํํ๋ค.
- ์ ๋ฌธ์ฅ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ณด ์๋ ์ธก๋ฉด์์ ๋ฌธ์ฅ์ ์ฌ๊ตฌ์ฑํ๊ธฐ ์ ๊น์ง๋ ํ๋ฆฐ ๊ตฌ์์ด ์์ด ๋ณด์ธ๋ค.
- ์บ์์ ์ฌ์ฉ๋๋ ์๋ฃ ๊ตฌ์กฐ๋ฅผ
CachingAuctionLoader
ํด๋์ค์ ๊ฐ์ถ๋ค.- ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ ํ์ผ์ ์ด๋ฆ์
PricingPolicy
ํด๋์ค์ ๊ฐ์ถ๋ค.
- ์ฝํ
์คํธ ๋
๋ฆฝ์ฑ์ ๋ก๊ทธ ํ์ผ์ ์ธ๋ถ ์ฌํญ์
PricingPolicy
ํด๋์ค์ ๊ฐ์ถ๋ ์ ๋ฌด๊ฐ ์์์ ๋ณด์ฌ์ค๋ค. ๋ก๊ทธ ํ์ผ ์ด๋ฆ์ด ํ์ํ๋ค๋ฉด ๊ทธ๊ฒ์ ์ธ๋ถ ํ๊ฒฝ ์ค์ ์ ์ฒ๋ฆฌํ๋ ์์ค์ ํฌํจ๋๊ณ ๊ทธ๊ณณ์์ ์ ๋๋ผ์ผ ํ๋ค.