๋ฐ์ผ๋ฆฌ ์žก(Job) ์ง€์‹

๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„, ๋ฐ์ดํ„ฐ์™€ ํ–‰๋™์œผ๋กœ ์ดํ•ดํ•˜๋‹ค.

๊ฐœ๋ฐœํ•˜๋Š” ์ฃผ๋””์”จ 2023. 10. 20. 00:14

 

์–ด๋–ค ์„ค๊ณ„๊ฐ€ ์ข‹์€ ๊ฐ์ฒด์ง€ํ–ฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

 

๊ฐ์ฒด์ง€ํ–ฅ์„ค๊ณ„์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ

๊ฐ์ฒด์ง€ํ–ฅ์— ์ˆ˜ ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ ์•Œ๊ฒŒ ๋œ ์‚ฌ์‹ค์€ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์‚ฌ๊ณ  + ํ–‰๋™ ์ค‘์‹ฌ ์‚ฌ๊ณ ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์กฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ์ด ๋‘๊ฐ€์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณผ๊นŒ์š”?

 

 


 

๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์‚ฌ๊ณ 

class Car {
        private Frame frame;
        private Engine engine;
        private List<Wheel> wheels;
        private Direction direction;
        private Speed speed;
}

๊ฐ€์žฅ ๋งŽ์€ ๋ณด์…จ์„ ํŒจํ„ด์ด์ฃ ? ์•„๋งˆ ๋Œ€๋ถ€๋ถ„ class ๊ฐœ๋…์„ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ ์‹ค์Šต์„ ํ•˜๋ฉด์„œ ๋งŒ๋“ค๊ฒŒ ๋˜๋Š” ์ฝ”๋“œ๋Š” ์ด๋Ÿฐ ๋ชจ์–‘์ผ ๊ฒ๋‹ˆ๋‹ค!! ๋ถ€๋ถ„ ๋ถ€๋ถ„ ํ•„์š”ํ•œ ๋ถ€ํ’ˆ์— ๋”ฐ๋ผ ๋„๋ฉ”์ธ์„ ๋ถ„๋ฆฌํ•ด๋†“์€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ–‰๋™ ์ค‘์‹ฌ์‚ฌ๊ณ 

class Car {
        public void drive(){}
        public void accelerate(){}
        public void decelerate(){}
        public void changeDirection(){]
}

์•„๊นŒ๋ณด๋‹ค ๋ญ”๊ฐ€ ํ–‰๋™ํ•˜๋Š” ๋ชจ์Šต๋“ค์„ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ์ฃ ? ๋‹จ์ˆœํžˆ ๊ฐ๊ฐ Layer ๋ณ„๋กœ ์—ญํ• ์„ ๋‚˜๋ˆ„์—ˆ๋˜ mvcํŒจํ„ด๊ณผ๋Š” ๋‹ฌ๋ฆฌ Domain์ด ํ•ด๋™์„ ๊ฐ–๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ์›€์ง์ผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ํ–‰๋™ ์ค‘์‹ฌ์‚ฌ๊ณ  ์ž…๋‹ˆ๋‹ค!!!

 

๊ทธ๋Ÿฐ๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ญ๊ฐ€ ์ข‹์„๊นŒ์š”?

๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์‚ฌ๊ณ ๋Š” ์ด๋ฏธ ๋Œ€๋ถ€๋ถ„์˜ ํ™˜๊ฒฝ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ํ–‰๋™ ์ค‘์‹ฌ์ ์ธ ์‚ฌ๊ณ ๊ฐ€ ์˜คํžˆ๋ ค ๋ถˆํŽธํ•œ ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€์š”?

 

์•„๋งˆ ์ด๋Ÿฐ ์˜๋ฌธ์„ ๊ฐ–๊ฒŒ๋˜์‹ค ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•, ๊ธฐ์กด์˜ Service์ฝ”๋“œ๋ฅผ ๋– ์˜ฌ๋ ค๋ณด์„ธ์š”!

๋Œ€๋ถ€๋ถ„ ์ˆ˜ ๋งŽ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋“ค์ด ์žˆ๊ณ ๋‚˜์„œ repository๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์—„์ฒญ ๋ณต์žกํ•˜๊ฒŒ ๋˜์–ด์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. (์ œ๊ฐ€ ๊ฒฝํ—˜ํ•œ ๋ชจ๋“  ์‹ค๋ฌด ํ”„๋กœ์ ํŠธ๊ฐ€ service๋‹จ์ด ๊ต‰์žฅํžˆ ๋ณต์žกํ•œ ํ˜•ํƒœ์˜€์Šต๋‹ˆ๋‹ค..^^..)

 

์ด๋Ÿฐ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋Œ€์‹ , ๋„๋ฉ”์ธ ์ž์ฒด์—์„œ ํ–‰๋™์„ ๊ฐ–๊ณ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๋„๋ฉ”์ธ์— ์ฑ…์ž„์„ ์œ„์ž„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, service ์ฝ”๋“œ๊ธธ์ด๊ฐ€ ์ค„์–ด๋“ ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค :) ์š”์ฆ˜, ํด๋ฆฐ์ฝ”๋“œ TDD DDD ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ํŠธ๋žœ๋“œ๋ฅผ ์ ‘ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด ๋˜ํ•œ ํŠธ๋žœ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹๊นŒํ•ฉ๋‹ˆ๋‹ค.

 

๋‹จ, ๋ชจ๋“  ํŠธ๋žœ๋“œ๋ฅผ ๊ทธ๋ƒฅ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์€ ๋น„์ถ”์ž…๋‹ˆ๋‹ค. ํŠธ๋žœ๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋‚˜์—๊ฒŒ ์ ํ•ฉํ•œ ๊ฒƒ์ธ์ง€, ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋ฉด ์™œ ๊ทธ๋Ÿฐ์ง€ ๋ถ„์„ํ•˜๋Š” ๋Šฅ๋ ฅ์„ ํ‚ค์šฐ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์—๋Š” ์ •๋‹ต์ด ์—†๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๊ฒƒ๋งŒ ์žˆ์„ ๋ฟใ…Žใ…Ž

 

์šฐ๋ฆฌ ๋ชจ๋‘ ์ตœ์ ํ™”ํ•˜๋Š” ๊ทธ ๋‚ ๊นŒ์ง€,

๊ทธ์ € ๋Œ์•„๊ฐ€๊ธฐ๋งŒ ํ•˜๋Š” ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ •๋ง ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ product๋ฅผ ๋งŒ๋“ค์–ด์š”!!