๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๊ฐœ๋ฐœ ์„œ์  (13)

Tech Log ๐Ÿ› ๏ธ

[์ผ„ํŠธ๋ฐฑ ๊ตฌํ˜„ ํŒจํ„ด] ์Šคํ„ฐ๋”” ํšŒ๊ณ 

0. ์Šคํ„ฐ๋”” ์ง„ํ–‰ ํŒ€์›๋“ค๊ณผ ์ผ์ฃผ์ผ์— 1~2๋ฒˆ ์ •๋„ ๋…ผ์˜ํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ๊ณผ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ์Šคํ„ฐ๋””๋Š” 1์‹œ๊ฐ„์„ ๋„˜๊ธฐ์ง€ ์•Š์œผ๋ ค๊ณ  ํ•˜์˜€์œผ๋ฉฐ ๊ฐ์ž ์ค€๋น„ํ•œ ๋‚ด์šฉ๋“ค์„ ๊ฐ€์ง€๊ณ  ์–˜๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์˜€๋‹ค. 1. ์ผ„ํŠธ๋ฐฑ ๊ตฌํ˜„ ํŒจํ„ด์„ ์ฝ๊ธฐ ์ „์— ๊ทธ๋™์•ˆ ์ฝ”๋”ฉ์„ ํ•˜๋ฉด์„œ ์ถ”ํ›„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™” ๋น„์šฉ์„ ๊ณ ๋ คํ•˜๋ฉด์„œ ์ง  ์ ์ด ํฌ๊ฒŒ ์—†์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๊ฐ€ ์• ๋งคํ•œ ์ƒํ™ฉ์ด ์˜ค๋ฉด ๊ทธ๋•Œ๊ทธ๋•Œ ๋‚ดํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ์„ ํƒ์„ ํ•˜์˜€์œผ๋ฉฐ ์ด๋Š” ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ์„ ์ง€ํ‚ค๊ธฐ ํž˜๋“ค์—ˆ๊ณ  ๊ณง ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์ด ๋Š˜์–ด๋‚˜๊ธฐ ์ผ์‘ค์˜€๋‹ค. ๊ทธ๋Ÿผ์—๋„ ํ‰์†Œ์— ์ž๋ฐ”๋‚˜ ๊ฐ์ฒด ์ง€ํ–ฅ์— ๋Œ€ํ•œ ์ง€์‹์„ ์ค‘์š”์‹œ ํ–ˆ์„๋ฟ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๊ฐ€ ํ•„์š”ํ•œ ํŒจํ„ด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•ด๋ณด๊ฑฐ๋‚˜ ๋”ฐ๋กœ ์ฐพ์•„์„œ ๊ณต๋ถ€ํ•  ์ƒ๊ฐ์€ ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋•Œ๋งˆ์นจ ํŒ€์—์„œ ๊ฐ์ฒด์ง€ํ–ฅ ์Šคํ„ฐ๋””๋ฅผ ๋๋‚ด๊ณ  ๋‹ค์Œ ์ฑ…์„ ๊ณ ๋ฅด๋˜ ์ค‘, ..

๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ - ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ , ๋„๋ฉ”์ธ ๋ชจ๋ธ๊ณผ ๊ฒฝ๊ณ„

์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์™€ ํŠธ๋žœ์žญ์…˜ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ 1. ์„ ์  ์ž ๊ธˆ 2. ๋น„์„ ์  ์ž ๊ธˆ ์„ ์  ์ž ๊ธˆ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ์‚ฌ์šฉ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ํ—ค๋”ฉ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ex) agg1์ด ์ˆ˜์ •ํ•˜๋Š” ๋™์•ˆ agg2๋Š” ์ž ๊ธˆ์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ๋ธ”๋กœํ‚น๋œ๋‹ค. ์„ ์  ์ž ๊ธˆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ต์ฐฉ ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ต์ฐฉ ์ƒํƒœ๋ž€? ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ์ž ๋‹ค๋ฅธ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๋ฅผ ์„ ์ ํ•˜๋‹ค๊ฐ€ ์„œ๋กœ์˜ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ๊ต์ฐฉ ์ƒํƒœ์— ๋ฐ”์ง€๋ฉด ์‹œ์Šคํ…œ์€ ๋งˆ๋น„๋˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๋‹ค. ์ตœ๋Œ€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ด์คŒ์œผ๋กœ์จ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋น„์„ ์  ์ž ๊ธˆ ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ DBMS์— ๋ฐ˜์˜ํ•˜๋Š” ์‹œ์ ์— ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ -> ๋ฒ„์ „ ๊ฐ’..

๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ - ๋„๋ฉ”์ธ ์„œ๋น„์Šค

๋„๋ฉ”์ธ ์„œ๋น„์Šค ์—ฌ๋Ÿฌ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ฑ…์ž„์ด ์• ๋งคํ•  ๋•Œ ๋„๋ฉ”์ธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„๋ฉ”์ธ ์„œ๋น„๋Š” ๋‹ค์Œ ์ƒํ™ฉ์— ์ด์šฉ๋œ๋‹ค. 1. ๊ณ„์‚ฐ๋กœ์ง 2. ์™ธ๋ถ€ ์‹œ์Šคํ…œ ์—ฐ๋™์ด ํ•„์š”ํ•œ ๋กœ์ง ๋„๋ฉ”์ธ ์„œ๋น„์Šค๋Š” ์ƒํƒœ ์—†์ด ๋กœ์ง๋งŒ ๊ตฌํ˜„ํ•œ๋‹ค. ๋„๋ฉ”์ธ ์„œ๋น„์Šค๋ฅผ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ๊ฐ์ฒด์— ์ฃผ์ž…ํ•˜๋ฉด ์•ˆ๋œ๋‹ค! ์™ธ๋ถ€ ์‹œ์Šคํ…œ ์—ฐ๋™๊ณผ ๋„๋ฉ”์ธ ์„œ๋น„์Šค public interface API { ... } ๋„๋ฉ”์ธ ๋กœ์ง ๊ด€์ ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค. ์‘์šฉ ์„œ๋น„์Šค๋Š” ์ด ๋„๋ฉ”์ธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋„๋ฉ”์ธ ์„œ๋น„์Šค์˜ ๋กœ์ง์ด ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด , ๋„๋ฉ”์ธ ์„œ๋น„์Šค ์ž์ฒด๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„๋ฉ”์ธ ์„œ๋น„์Šค์˜ ๊ตฌํ˜„์ด ํŠน์ • ๊ธฐ์ˆ ์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ถ”์ƒํ™”ํ•ด์•ผํ•œ๋‹ค.

๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ - ํ‘œํ˜„ ์˜์—ญ๊ณผ ์‘์šฉ ์˜์—ญ

ํ‘œํ˜„ ์˜์—ญ๊ณผ ์‘์šฉ ์˜์—ญ ์‘์šฉ ์˜์—ญ๊ณผ ํ‘œํ˜„ ์˜์—ญ์€ ์‚ฌ์šฉ์ž์™€ ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๋งค๊ฐœ์ฒด ์—ญํ• ์ด๋‹ค. ํ‘œํ˜„ ์˜์—ญ์€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ํ•ด์„ํ•˜๊ณ  ๊ทธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์‘์šฉ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์‘์šฉ ์˜์—ญ์€ ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๋‘ ์˜์—ญ์€ ์„œ๋กœ ์š”๊ตฌํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ํ˜•์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ์„ ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ์€ ํ‘œํ˜„ ์˜์—ญ์ด ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‘์šฉ ์„œ๋น„์Šค๋Š” ํ‘œํ˜„ ์˜์—ญ์— ์˜์กดํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค. ์‘์šฉ ์„œ๋น„์Šค์˜ ์—ญํ•  ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์—์„œ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•œ๋‹ค. public Result func(Req req){ // ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์—์„œ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๋ฅผ ๊ตฌํ•จ Agg agg = AggRepository.finById(req.getId()); // ์• ๊ทธ๊ฑฐํŠธ์˜ ๋„๋ฉ”์ธ ๊ธฐ๋Šฅ ์‹คํ–‰ ad..

๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ - ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ

์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ๊ฐ์ฒด ๋ชจ๋ธ์ด ๋ณต์žกํ•ด์ง€๋ฉด ๊ฐœ๋ณ„ ๊ตฌ์„ฑ์š”์†Œ ์œ„์ฃผ๋กœ ๋ชจ๋ธ์„ ์ดํ•ดํ•˜๊ฒŒ ๋˜๊ณ  ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ๋‚˜ ํฐ ์ˆ˜์ค€์—์„œ ๋„๋ฉ”์ธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค. -> ์ƒ์œ„ ์ˆ˜์ค€์—์„œ ๋ชจ๋ธ์„ ์กฐ๋งํ•ด์•ผํ•˜๋Š”๋ฐ , ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์• ๊ทธ๋ฆฌ๋ฆฌ๊ฑฐํŠธ๋Š” ๋ณต์žกํ•œ ๋„๋ฉ”์ธ์„ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์— ์†ํ•œ ๊ฐ์ฒด๋Š” ์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ๋™์ผํ•œ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ฐ€์ง€๋ฉฐ ๋‹ค๋ฅธ ์• ๊ทธ๋ฆฌ์ปคํŠธ์— ์†ํ•œ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ์• ๊ทธ๋ฆฌ์ปคํŠธ์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ๋ฃจํŠธ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•  ์ฃผ์ฒด๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ด ์ฑ…์ž„์„ ์ง€๋Š” ๊ฒƒ์ด ๋ฃจํŠธ ์—”ํ‹ฐํ‹ฐ์ด๋‹ค. ex) Order -> (OrderLine) , (Orderer) , (Address) ํ•ต์‹ฌ ์—ญํ• ์€ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์˜ ์ผ๊ด€์„ฑ์ด ๊นจ์ง€์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฃจํŠธ๋Š” ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๊ฐ€ ์ œ๊ณตํ•ด์•ผํ•  ๋„๋ฉ”์ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์• ๊ทธ..

๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ - ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

๋„ค ๊ฐœ์˜ ์˜์—ญ ํ‘œํ˜„ ์˜์—ญ HTTP ์š”์ฒญ์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‘์šฉ ์˜์—ญ์— ์ „๋‹ฌํ•˜๊ณ  ๋‹ค์‹œ ์‘๋‹ต์„ HTTP ์‘๋‹ต์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ „์†ก ex) mvc ํ”„๋ ˆ์ž„์›Œํฌ ์‘์šฉ ์˜์—ญ(์„œ๋น„์Šค ๊ณ„์ธต) ๋„๋ฉ”์ธ ์˜์—ญ์˜ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค. ๋กœ์ง์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋ณด๋‹จ ๋„๋ฉ”์ธ ๋ชจ๋ธ์— ๋กœ์ง ์ˆ˜ํ–‰์„ ์œ„ํž˜ ๋„๋ฉ”์ธ ์˜์—ญ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๊ณ  ํ•ต์‹ฌ ๋กœ์ง์„ ๊ตฌํ˜„ public cancelOrder(String orderId) { Order order = findOrderById(orderId); // ๋„๋ฉ”์ธ ๋ชจ๋ธ์— ์œ„์ž„ ... } ์ธํ”„๋ผ ์ŠคํŠธ๋Ÿญ์ณ ์˜์—ญ ๋…ผ๋ฆฌ์  ๊ฐœ๋… ๋ณด๋‹ค๋Š” ๊ตฌํ˜„ ๊ธฐ์ˆ ์„ ๋‹ค๋ฃฌ๋‹ค. ex) DB ,SMTP , ์นดํ”„์นด ๊ณ„์ธต ๊ตฌ์กฐ ์•„ํ‚คํ…์ฒ˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋ณดํ†ต ํ‘œํ˜„ -> ์‘์šฉ -> ๋„๋ฉ”์ธ -> ์ธํ”„๋ผ์Šค..

๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ - ๋„๋ฉ”์ธ ๋ชจ๋ธ ์‹œ์ž‘ํ•˜๊ธฐ

์š”๊ตฌ ์‚ฌํ•ญ ์š”๊ตฌ์‚ฌํ•ญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋ฉด ์—‰๋šฑํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. (Garbage in , Garbage out) -> ์ฝ”๋”ฉ์— ์•ž์„œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค ! ๋„๋ฉ”์ธ ๋ชจ๋ธ ํŠน์ • ๋„๋ฉ”์ธ์„ ๊ฐœ๋…์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์„ ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ด€๊ณ„์ž๋“ค์ด ๋™์ผํ•œ ๋ชจ์Šต์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋ชจ๋ธ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค. ex) ๊ฐ์ฒด , ์ƒํƒœ ๋‹ค์ด์–ด๊ทธ๋žจ, ๊ทธ๋ž˜ํ”„ ๋„๋ฉ”์ธ ๋ชจ๋ธ ํŒจํ„ด ๋„๋ฉ”์ธ ๊ณ„์ธต์€ ๋„๋ฉ”์ธ์˜ ํ•ต์‹ฌ ๊ทœ์น™์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” ์ฃผ๋ฌธ ์ƒํƒœ์— ๋”ฐ๋ผ ๋ฐฐ์†ก์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๋„๋ฉ”์ธ ๋ชจ๋ธ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ public class Order { private OrderState state; private ShippingInfo inf..

์ผ„ํŠธ๋ฐฑ ๊ตฌํ˜„ ํŒจํ„ด 9์žฅ - ์ปฌ๋ ‰์…˜

์ปฌ๋ ‰์…˜ ์ปฌ๋ ‰์…˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐ์ฒด์˜ ๋ฌถ์Œ์— ๋Œ€ํ•ด ์ œ๊ฐ๊ฐ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ์ฃผ๋กœ ์„ฑ๋Šฅ์— ๊ด€๋ จ๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ์ปฌ๋ ‰์…˜์ด ํ‘œํ˜„ํ•˜๋Š” 3๊ฐ€์ง€ ๊ฐœ๋… 1. ํฌ๊ธฐ - ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์ƒ์„ฑ ์‹œ ๊ณ ์ •๋˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ์ปฌ๋ ‰์…˜์€ ์ค‘๊ฐ„์— ํฌ๊ธฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์›์†Œ ๊ฐ„ ์ˆœ์„œ - ์›์†Œ์˜ ์ˆœ์„œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ˆœ์„œ๋ฅผ ๋ณด์ „ํ•˜๋Š” ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. 3. ๋…์ž์„ฑ - ์ผ๋ถ€ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ ์–ด๋–ค ์›์†Œ๊ฐ€ ์ปฌ๋ ‰์…˜์— ์†ํ•ด์žˆ๋Š” ์ง€ ํ˜น์€ ๋ช‡๋ฒˆ ๋‚˜ํƒ€๋‚ฌ๋Š”์ง€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ๋ฐฐ์—ด ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ์œ ์—ฐ์„ฑ ๋ฌธ์ œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. Iterable ์›์†Œ๋ฅผ ์ฃผ๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋ง‰์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์›์†Œ๊ฐ€ ์ง€์›Œ์งˆ ์œ„ํ—˜์ด ์žˆ๋‹ค. Collection Iterable์„ ์ƒ์†ํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ..

์ผ„ํŠธ๋ฐฑ์˜ ๊ตฌํ˜„ ํŒจํ„ด 7์žฅ - ํ–‰์œ„

๋ฉ”์‹œ์ง€ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด, ๋ฐœ์‹ ์ž์˜ ์ƒํƒœ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์ง€๋งŒ ์ˆ˜์‹ ์ž์˜ ์ƒํƒœ๋Š” ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์‹œ์ €๋Š” ๋‹น์žฅ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์„ธ๋ถ€ ๊ตฌํ˜„์ด ์กด์žฌํ•œ๋‹ค ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ๋‹ค. (์บก์Šํ™”) function() { input(); process(); output(); } ์„ ํƒ ๋ฉ”์‹œ์ง€ ์„ ํƒ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…์‹œ์  ์กฐ๊ฑด๋ฌธ์˜ ์‚ฌ์šฉ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณผ๋„ํ•œ ์„ ํƒ๋ฉ”์‹œ์ง€์˜ ์‚ฌ์šฉ์€ ๊ฐ€๋…์„ฑ์„ ์ €ํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. public void display(Subject subject, Brush brush) { brush.display(subject); } ๋”๋ธ” ๋””์ŠคํŒจ์น˜ 2๊ฐœ์˜ ์„ ํƒ ๋ฉ”์‹œ์ง€๋ฅผ ์ง๋ ฌ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. https://www.youtube.com/watch?v=s-tXAHub6v..

์ผ„ํŠธ๋ฐฑ์˜ ๊ตฌํ˜„ํŒจํ„ด 6์žฅ - ์ƒํƒœ

๊ฐ์ฒด๋Š” ์™ธ๋ถ€์— ๋“œ๋Ÿฌ๋‚˜๋Š” ํ–‰์œ„์™€ ํ–‰์œ„๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ํŽธ๋ฆฌํ•œ ๋‹จ์œ„๋‹ค. ์ƒํƒœ - ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์œ ์‚ฌํ•œ ์ƒํƒœ๋ฅผ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฐ ์ƒํƒœ๋Š” ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค. ๋‘ ๊ฐœ์˜ ์ƒํƒœ๊ฐ€ ์œ ์‚ฌํ•œ ์ง€ ์•Œ๋ ค๋ฉด 1. ๋‘ ๊ฐœ์˜ ์ƒํƒœ๊ฐ€ ๋™์ผํ•œ ์—ฐ์‚ฐ ์•ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š”๊ฐ€? 2. ๋™์ผํ•œ ์‹œ์ ์— ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋˜๋Š”๊ฐ€? ๋ฅผ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค. ์ง์ ‘ ์ ‘๊ทผ - ์ง์ ‘ ์ ‘๊ทผ์˜ ์žฅ์ ์€ ๋ช…ํ™•์„ฑ์ด๋‹ค. x=10 // ๋งค์šฐ๋งค์šฐ ๋ช…ํ™•ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์•Œ๋ ค์ฃผ๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด doorRegister = 1; // ์ง๊ด€์ ์ด์ง€ ์•Š์Œ door.open(); // ๋งค์šฐ ์ง๊ด€์ ์ž„ ๋”ฐ๋ผ์„œ ์ง์ ‘ ์ ‘๊ทผ์ด ๋งŽ๋‹ค๋ฉด ์›ํ™œํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ„์ ‘ ์ ‘๊ทผ - ๋ช…ํ™•์„ฑ๊ณผ ์ง์ ‘์„ฑ์„ ํฌ์ƒํ•ด์„œ ์œ ์—ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ..