Transaction Script์™€ Domain Model

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‘๊ฐ€์ง€ ํŒจํ„ด๋ฐฉ๋ฒ•์ด๋‹ค.

Transaction Script

(๋ฉ”์„œ๋“œ ์™€ ๊ฐ™์€ ๊ฒƒ์˜)์ฑ…์ž„์†Œ์žฌ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ ๋กœ์ง์— ๋‘๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํŒจํ„ด

ํŠธ๋žœ์žญ์…˜?

๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜์•ปํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…๋“ค,๋‹จ์œ„,์—ฐ์‚ฐ

๊ตฌํ˜„์ด ์‰ฝ๊ณ  ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•˜์งˆ ์ˆ˜๋ก ๋ชจ๋“ˆํ™”๊ฐ€ ๋ณต์žกํ•ด์ง€์ง€๋งŒ, ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์—์„œ๋งŒ ๊ตฌํ˜„,์‚ฌ์šฉ๋  ๊ฒฝ์šฐ์— ๋ถ€์ž‘์šฉ(side effect)๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Student student = loadStudent("ํ™๊ธธ๋™");
School school = loadSchool("S๋Œ€");

...

if(student.getSchoolName() == school.getName())
    return true;

Domain Model

์ฑ…์ž„์†Œ์žฌ๋ฅผ ๊ฐ์ฒด ์ž์ฒด์˜ ๋ชจ๋ธ๋ง์— ๋‘๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ ๊ฐ์ฒด์— ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋ถ„๋‹ด์‹œํ‚ค๋Š” ๋ฐฉ์‹

๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ™์ด ์กด์žฌํ•˜๋ฉฐ, ๊ฐ์ฒด๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ์ˆ˜ ์žˆ์–ด ๋กœ์ง์˜ ๋‹จ์ˆœํ™”์— ๋„์›€์ด ๋˜๊ณ  ์ƒ์†๊ณผ ๊ฐ™์ด ์œ ์—ฐ์„ฑ์ด ๋†’์•„์ ธ ๋ชจ๋“ˆํ™”๊ฐ€ ๊ฐ„๋‹จํ•ด์ง„๋‹ค.

ํ•˜์ง€๋งŒ, ๊ฐ์ฒด๋“ค๊ฐ„์˜ ๋ชจ๋ธ ์„ค๊ณ„/๊ตฌ์ถ•์ด ํ•„์š”ํ•˜๊ณ  ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด์„ฑ(dependency)๋ฅผ ๋งบ๊ณ  ์žˆ์–ด ์ œ์•ฝ์‚ฌํ•ญ์ด ๋  ์ˆ˜ ๋„ ์žˆ๋‹ค.

if(student.isBelongTo(school))
    return true;

Last updated