Notice
Recent Posts
Link
Today
Total
07-07 13:42
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐ŸฐJAVA/Design Pattern (4)

dingdong coding

Strategy Pattern

ํ•„์š”์„ฑ ๋จผ์ € Strategy Pattern์„ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์˜ˆ๋ฅผ ๋“ค์–ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋กœ๋ด‡(Robot) ์„ค๊ณ„๋„์— ๋”ฐ๋ผ ์•„ํ†ฐ(Atom)๊ณผ ํƒœ๊ถŒ๋ธŒ์ด(TaekwonV)๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํƒœ๊ถŒ๋ธŒ์ด์™€ ์•„ํ†ฐ์€ ๊ณตํ†ต์ ์œผ๋กœ ๊ณต๊ฒฉ๊ณผ ์ด๋™ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋ด‡ ํด๋ž˜์Šค์—์„œ attack์™€ move๋ฉ”์„œ๋“œ๋ฅผ ์ถ”์ƒ๋ฉ”์„œ๋“œ๋กœ ์„ค์ •ํ•ด ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ ์ด๋™ ํƒœ๊ถŒ๋ธŒ์ด ๋ฏธ์‚ฌ์ผ ๊ณต๊ฒฉ ๊ฑท๊ธฐ ์•„ํ†ฐ ์ฃผ๋จน ๊ณต๊ฒฉ ํ•˜๋Š˜ ๋‚ ์•„๋‹ค๋‹ˆ๊ธฐ ๊ทธ๋Ÿฌ๋‹ค ํ•˜๋Š˜๋กœ ๋‚ ์•„๋‹ค๋‹ˆ๋˜ ์•„ํ†ฐ์ด ๊ฐ‘์ž๊ธฐ ๊ฑท๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„ํ†ฐ์˜ move() ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ move( )๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์€ OCP (Open/Close Principle)์— ์œ„๋ฐฐ๋˜๋Š” ์ž‘์—…๋‹ˆ๋‹ค. ..

๐ŸฐJAVA/Design Pattern 2022. 7. 6. 02:09
Factory Method Pattern

ํ•„์š”์„ฑ ๋จผ์ € Factory Method Pattern ํŒจํ„ด์„ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์€ ๊ฐœ๋ณ„ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ๊ธฐ๋Šฅ์˜ ๋ณ€๊ฒฝ์ด๋‚˜ ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ๊ธฐ๋Šฅ ์„ ํƒ์€ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์„ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ ์ ˆํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” ์ž์ฃผ ์ค‘๋ณต๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”์ƒํ™”ํ•ด ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒ ํ–ˆ์„ ์‹œ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ์ฝ”๋“œ๋ฅผ ์ „๋ถ€ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณต์žฅ์ด ํ•„์š”ํ• ๊นŒ์š”? Factory Pattern Factory์˜ ๋œป์€ ๊ณต์žฅ์œผ๋กœ ์—ฌ๊ธฐ์„œ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณต์žฅ(๋ชจ๋“ˆ)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ..

๐ŸฐJAVA/Design Pattern 2022. 7. 5. 01:16
Singleton Pattern

ํ•„์š”์„ฑ ๋จผ์ € Singleton ํŒจํ„ด์„ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•œ ๋ช…์˜ ์œ ์ €๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ์œ ์ €๊ฐ€ ์ด์šฉํ•˜๋ฉฐ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ๋™์‹œ ๋‹ค๋ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ ์šฉํ•˜์ง€ ์•Š์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๋ฉด ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ ๋งˆ๋‹ค ์š”์ฒญ ๋ฐ›์€ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์†Œ๋ฉธ์‹œํ‚ค๋Š” ๊ณผ์ •์„ ๋ฌด์ˆ˜ํžˆ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์‹ฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Singleton Pattern • ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๊ฐ€ ์˜ค์ง 1๊ฐœ๋งŒ ์กด์žฌํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. • ๊ฐ์ฒด๊ฐ€ ํ˜„์žฌ JVM์•ˆ์— ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผํ•˜๋Š” ํŒจํ„ด • private ์ƒ์„ฑ์ž ์™ธ๋ถ€์—์„œ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด๋ฅผ 2๊ฐœ ์ด์ƒ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์Šต๋‹ˆ๋‹ค. ..

๐ŸฐJAVA/Design Pattern 2022. 6. 21. 21:46
[ Object-Oriented Programming ] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ฐ์ฒด Object = ๋ฌผ์ฒด, ์†์„ฑ(property)๊ณผ ํ–‰๋™(method)๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํ˜„์‹ค์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ or ๋ฌผ์ฒด or ๋Œ€์ƒ ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ž€? Object Oriented Programming ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„, ์ฆ‰ "๊ฐ์ฒด"๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์ œ ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์˜ฎ๊ฒจ์™€ ์ด๋ฅผ ๊ฐ์ฒด๋กœ ๋ณด๊ณ  ํ•ด๋‹น ๊ฐ์ฒด์˜ ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ์„ ๋ชจ๋ธ๋งํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๋‹ค. ( ์žฌ์‚ฌ์šฉ์„ฑ ) ex) Java = ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‰ฝ๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•จ 1. ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง• 1) ๋‹คํ˜•์„ฑ Polymorphism..

๐ŸฐJAVA/Design Pattern 2022. 1. 24. 00:33