์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค) Lv1 - 3์ฃผ์ฐจ [Coordinate] ๋ฏธ์…˜ ํ›„๊ธฐ, ์ฝ”๋“œ๋ฆฌ๋ทฐ

3์ฃผ์ฐจ ๋ฏธ์…˜ : Coordinate, RentCompany https://github.com/woowacourse/java-coordinate ํ›„๊ธฐ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ตฌํ˜„๋‚ด์šฉ์ด ๊ทธ๋‚˜๋งˆ ๊ฐ€์žฅ ์‰ฝ๊ณ  ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ์˜€๋‹ค. ์ด๋ก ์œผ๋กœ๋งŒ ์•Œ๊ณ ์žˆ๋˜ ์ƒ์†๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜ค๋žœ๋งŒ์— ์ง์ ‘ ์ฝ”๋“œ๋กœ ์ ์šฉํ•˜๋ ค๋‹ˆ ์–ด์ƒ‰ํ–ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ ์ž์‹๋“ค์˜ ๊ณตํ†ต๋ถ€๋ถ„์„ ์ตœ๋Œ€ํ•œ ๋ถ€๋ชจ AbstractFigure๋กœ ๋Œ์–ด ์˜ฌ๋ ค๋ผ. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋กœ์ง์€ ์ž์‹์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ถ€๋ชจ๋กœ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. List points๋ฅผ ์˜ฌ๋ฆฐ๊ฒƒ๋„ ์ž˜ ํ•œ ์„ ํƒ. ๋งŒ์•ฝ Line์€ ์“ฐ์ง€์•Š๊ณ , Triangle๊ณผ Rectangle๋งŒ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ƒ์†ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ณ ๋ คํ•ด๋ณผ๋ฒ•. ์‚ฌ๊ณ ์— ๊ฐ–ํžˆ์ง€ ๋ง์ž. ๋‹น์‹œ์˜ ๋‚ด Input..

์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค) Lv1 - 2์ฃผ์ฐจ [Ladder] ๋ฏธ์…˜ ํ›„๊ธฐ, ์ฝ”๋“œ๋ฆฌ๋ทฐ

2์ฃผ์ฐจ ๋ฏธ์…˜ : ๋ฌธ์ž์—ด ๋ง์…ˆ ๊ณ„์‚ฐ๊ธฐ, ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„ https://github.com/woowacourse/java-ladder ํ›„๊ธฐ business logic์ด ๊ฝค ์–ด๋ ค์› ๋‹ค. ์˜คํžˆ๋ ค ์ดํ›„์˜ ์ขŒํ‘œ, ๋กœ๋˜๊ฐ€ ํ•ต์‹ฌ๋กœ์ง์€ ๋” ์‰ฌ์› ๋‹ค. ์‰ฝ์ง€์•Š์•˜์ง€๋งŒ, ๊ทธ๋งŒํผ ๊ทธ ๊ณผ์ •์—์„œ ๊ณ ๋ฏผํ• ๊ฒƒ๋“ค์ด ๋งŽ์•„์„œ ๋„์›€์ด ๋งŽ์ด ๋œ๊ฑฐ๊ฐ™๋‹ค. ๋‚ด ์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ https://www.matheus.ro/2018/01/29/clean-code-avoid-many-arguments-functions/ ์šฐ๋ฆฐ ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ max 3๊ฐœ๋กœ ๋ฌด์–ธ์˜ ์•ฝ์†์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ตœ๋Œ€ํ•œ ์ค„์ด๋„๋ก ๋…ธ๋ ฅํ•˜์ž. ์ € ๋งํฌ๋ฅผ ๋ณด๋ฉด, ์ธ์ž์ˆ˜๋ฅผ ์ค„์ด๋Š” 2๊ฐ€์ง€์˜ ๋Œ€์ฑ…์ด ๋“ฑ์žฅํ•œ๋‹ค. Extract method technique : ๋ณ„๋„ ๋ฉ”์†Œ๋“œ๋กœ ์ถ”์ถœํ•œ๋‹ค. Parameter Object :..

์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค) Lv1 - 1์ฃผ์ฐจ [RacingCar] ๋ฏธ์…˜ ํ›„๊ธฐ, ์ฝ”๋“œ๋ฆฌ๋ทฐ

1์ฃผ์ฐจ ๋ฏธ์…˜ : ๋ฌธ์ž์—ด ๊ณ„์‚ฐ๊ธฐ, ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๊ฒŒ์ž„ https://github.com/woowacourse/java-racingcar ํ›„๊ธฐ ์ž๋™์ฐจ ๊ฒฝ์ฃผ ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋ฆฌ์ฝ”์Šค๋•Œ ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด๋ด์„œ ์ˆ˜์›”ํ• ์ค„ ์•Œ์•˜์œผ๋‚˜, ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ฒ˜์Œ์ด๋ผ ์–ด๋ ค์› ๋‹ค. ํŒ๋‹จ์˜ ๊ธฐ์ค€์ด ๋ถ€์กฑํ•˜๋‹ค. ํด๋ž˜์Šค๋Š” ์ด๋ ‡๊ฒŒ ๋ถ„๋ฆฌํ•˜๋Š”๊ฒƒ์ด ๋งž๋Š”์ง€, ์ด ๋ฉ”์†Œ๋“œ๋Š” ์—ฌ๊ธฐ์— ์œ„์น˜ํ•˜๋Š”๊ฒƒ์ด ๋งž๋Š”์ง€ ๋“ฑ, ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด ์ฐธ ๋งŽ๊ฒŒ ๋А๊ปด์ง„๋‹ค. ์ด์ œ ์ฒซ์ฃผ๋‹ˆ ์ ์  ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋‚˜์•„์งˆ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•œ๋‹ค. ๋‚ด ์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ํ•œ๊ฐ€์ง€ ์ผ๋งŒ ์ž˜ํ•˜๋„๋ก ์ตœ๋Œ€ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•œ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ๋„, ์—ฌ์ „ํžˆ ๋‚จ์•„์žˆ์—ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ๋ฆฌํŒฉํ† ๋ง ์ˆ˜ํ–‰ Java) enum์„ ํ™œ์šฉํ•ด if๋ฌธ ์—†์• ๊ธฐ (with Calculator ์˜ˆ์ œ) View๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ต์ˆ™์น˜ ์•Š์•˜๊ณ , ์ด๋ฒˆ์ฃผ์— ๊ฐ€์žฅ ์–ด๋ ค์› ๋˜ ๋ถ€..

์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค) ๊ฐœ๋ฐœ ํ”ผ๋“œ๋ฐฑ, ํŒ ๋ชจ์Œ (์ข…ํ•ฉ)

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

Abstract Factory Pattern (์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด)

Abstract Factory Pattern (์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด) ๋น„ํ–‰๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ๋ฏธ์‚ฌ์ผ์„ ๋ฐœ์‚ฌํ•ด์„œ ์ ์„ ๋ฏธ์‚ฌ์ผ๋กœ ๋งž์ถ”๋Š” ์ŠˆํŒ… ๊ฒŒ์ž„์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด๋ฅผ ์ง„ํ–‰ํ•˜๋Š” Stage ํด๋ž˜์Šค๋Š” ๋ช‡ ๋‹จ๊ณ„์ธ์ง€์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ์ , ์žฅ์• ๋ฌผ, ๋ณด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ Stage ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์€ ๋‹จ๊ณ„๋ณ„๋กœ ์ , ์žฅ์• ๋ฌผ, ๋ณด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ทœ์น™์ด Stage ํด๋ž˜์Šค์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ƒˆ๋กœ์šด ์  class๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜, ๊ฐ ๋‹จ๊ณ„์˜ ๋ณด์Šค ์ข…๋ฅ˜๊ฐ€ ๋ฐ”๋€” ๋•Œ, ๋‹จ๊ณ„๋ณ„ ์  ์ƒ์„ฑ ๊ทœ์น™์ด ๋‹ฌ๋ผ์งˆ ๊ฒฝ์šฐ ๋“ฑ์— Stage ํด๋ž˜์Šค๋ฅผ ํ•จ๊ป˜ ์ˆ˜์ •ํ•ด์•ผํ•˜๊ณ , ์ฝ”๋“œ๋˜ํ•œ ๋ณต์žกํ•ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ Stage ํด๋ž˜์Šค์—์„œ ๊ฐ์ฒด์ƒ์„ฑ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•œ๋‹ค.**โ€‹** ์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์ด ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์ด๋‹ค. Enemy..

Design Pattern 2019. 9. 13. 16:56
Singleton pattern (์‹ฑ๊ธ€ํ„ด ํŒจํ„ด)

Singleton pattern (์‹ฑ๊ธ€ํ„ด ํŒจํ„ด) ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  (static), ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ๋˜์–ด๋„, ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์ด๊ณ  ์ตœ์ดˆ์— ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฆ‰, ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด ์ด์œ , ์žฅ์  ํ•œ๋ฒˆ์˜ new๋กœ ๊ณ ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” global์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์‰ฝ๋‹ค. DB Connection Pool (DBCP)์ฒ˜๋Ÿผ ๊ณตํ†ต๋œ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ. ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๊ฒฝ์šฐ, ๊ฐ ์•กํ‹ฐ๋น„ํ‹ฐ๋‚˜ ํด๋ž˜์Šค ๋ณ„๋กœ ์ฃผ์š” ํด๋ž˜์Šค๋ฅผ ์ผ์ผํžˆ ์ „๋‹ฌํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฏ€..

Design Pattern 2019. 9. 13. 16:53
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/12   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ