JiwonDev

์žก์†Œ๋ฆฌ2

by JiwonDev

https://www.youtube.com/watch?v=26S4VFUWlJM

 

๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ๊ฐ€ ์ด๋ ‡๊ฒŒ.

Transaction Script (์ ˆ์ฐจ์ง€ํ–ฅ)

Domain Model (๊ฐ์ฒด์ง€ํ–ฅ)

* Table Module ํŒจํ„ด (ํ…Œ์ด๋ธ” = Entity ์™„์ „ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ)์€ ์ž๋ฐ”์ชฝ์—์„  ๊ฑฐ์˜ ์‚ฌ์šฉ์•ˆํ•จ.

 

๐Ÿ’ญ ๋„๋ฉ”์ธ ๋ ˆ์ด์–ด๊ฐ€ ์ „์ฒด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

๋„๋ฉ”์ธ์„ ์–ด๋–ป๊ฒŒ ์งœ๋Š๋ƒ์— ๋”ฐ๋ผ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ์ด ๋‹ฌ๋ผ์ง„๋‹ค.

๐Ÿ’ญ ์š”๊ตฌ์‚ฌํ•ญ ์‚ดํŽด๋ณด๊ธฐ

์˜จ๋ผ์ธ ์˜ํ™” ์˜ˆ๋งค ์‹œ์Šคํ…œ์„ Transcation Script์™€ Domain Model๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ตฌํ˜„ํ•ด๋ณด์ž.

๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ : ์˜ํ™”๋ฅผ ์˜ˆ๋งคํ•œ๋‹ค.

๋„๋ฉ”์ธ ๊ฐœ๋… : ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐœ๋…๋“ค

[์˜ํ™”] - ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ. ์˜ํ™”์— ๋Œ€ํ•œ ์ •๋ณด

[์ƒ์˜] - ์˜ˆ๋งคํ•  ์ฃผ์ฒด

[ํ• ์ธ] - ์†Œ๋น„์ž๋ฅผ ํŠน์ •ํ•œ ์‹œ๊ฐ„๋Œ€๋กœ ์œ ๋„ํ•˜๊ธฐ ์œ„ํ•œ ํ• ์ธ

ํ• ์ธ ์ •์ฑ… : ๊ณ ์ •๊ธˆ์•ก ํ• ์ธ, ๋น„์œจ ํ• ์ธ

ํ• ์ธ ๊ทœ์น™ : ํŠน์ •์‹œ๊ฐ„ ํ• ์ธ, ํŠน์ • ์ •์ฑ… ํ• ์ธ(์•„์นจ์˜ํ™”, 10ํšŒ ์ƒ์˜)

์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ”ํƒ•์œผ๋กœ 3๊ฐœ์˜ ๋„๋ฉ”์ธ์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์˜ํ™”, ํ• ์ธ, ๊ทœ์น™
์‹ค์ œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ดํŽด๋ณด์ž. ๋ฌด์Šจ ๋„๋ฉ”์ธ์ด ๋” ํ•„์š”ํ• ๊นŒ?

 

์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ถ„์„ํ•ด๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ์ตœ์ข… ๋„๋ฉ”์ธ(๋˜๋Š” ํ›„๋ณด ๋„๋ฉ”์ธ)์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

 

๐Ÿ’ญ 1. ํŠธ๋žœ์žญ์…˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“ค์–ด๋ณด๊ธฐ (์ ˆ์ฐจ์ง€ํ–ฅ)

Process์™€ Data๊ฐ€ ๋”ฐ๋กœ ๋…ผ๋‹ค.

[๋ฐ์ดํ„ฐ] ๋ฌด์—‡์„ ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ „๋ถ€ ์„ค๊ณ„ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ทธ๋Œ€๋กœ ๋ฐฐ์น˜ํ•œ [๋„๋ฉ”์ธ ํด๋ž˜์Šค]๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค - Anemic Domain Model (๋นˆ์•ฝํ•œ ๋„๋ฉ”์ธ ๋ชจ๋ธ)

๊ทธ๋ž˜๋„ ๋‚˜๋ฆ„ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ Private ์†์„ฑ, Getter Setter๋Š” ๊ตฌํ˜„

๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ DAO(Data Access Object)๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

์ด๋ฅผ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๊ฒŒ์ดํŠธ์›จ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

์ด์ œ [ํ”„๋กœ์„ธ์Šค]๋ฅผ ๊ณ ๋ฏผํ•œ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ?

์ด์ œ ๋งŒ๋“ค์–ด์ง„ DAO๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋งŒ๋“ ๋‹ค.

public Reservation reserveShowing(int customerId, int showingId, int audienceCount){

    ๐Ÿšฉ1 //๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ถ€ํ„ฐ Moving, Showing, Rule ์กฐํšŒ
    ๐Ÿšฉ2 //Showing์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” Rule์ด ์กด์žฌํ•˜๋Š”์ง€ ํŒ๋‹จ
    
    ๐Ÿšฉ3 if(Rule์ด ์žˆ๋‹ค๋ฉด){
    	//Discount๋ฅผ ์ฝ์–ด ํ• ์ธ๋œ ์š”๊ธˆ์„ ๊ณ„์‚ฐ
    } else {
    	//ํ• ์ธ ์—†์ด Moive์˜ ์ •๊ฐ€๋ฅผ ์ด์šฉํ•ด ์š”๊ธˆ ๊ณ„์‚ฐ
    }
  
    ๐Ÿšฉ4 //Reservation ์ƒ์„ฑ ํ›„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ €์žฅ
    return result;
}

์ „ํ˜•์ ์ธ ํŠธ๋žœ์žญ์…˜ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ตฌํ˜„๋ฐฉ๋ฒ•.

๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ์Šคํฌ๋ฆฝํŠธ(์„œ๋น„์Šค)์— ์ง‘์ค‘๋˜์–ด ์žˆ๋‹ค.

๋ฌผ๋ก  ๋„๋ฉ”์ธ์ด ๊ฐ„๋‹จํ•˜๋‹ค๋ฉด ์ ˆ์ฐจ์ ์œผ๋กœ ๋งŒ๋“œ๋Š”๊ฒŒ ํ›จ์”ฌ ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’ญ 2. ๋„๋ฉ”์ธ ๋ชจ๋ธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ (๊ฐ์ฒด์ง€ํ–ฅ)

๊ฐ์ฒด์ง€ํ–ฅ์ด๋ž€. ์ฃผ์–ด์ง„ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ํ˜‘๋ ฅ.

ํ˜ผ์ž์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค. ๊ฐ์ฒด๊ฐ„์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

 

๊ฐ์ฒด๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€ ํŒŒ์•…ํ•œ๋‹ค. CRC ์นด๋“œ

์—ญํ• ์„ ๋งก์„ ํ›„๋ณด(Showing)์™€ ์ฑ…์ž„(~ํ•œ๋‹ค)์„ ์ •ํ•˜๊ณ , ํ˜‘๋ ฅํ•  ๊ฐ์ฒด(Moive)๋ฅผ ์ •ํ•œ๋‹ค.

๊ฐ์ฒด๊ฐ€ ํ–‰๋™๊ณผ ์ƒํƒœ๋ฅผ ํ•จ๊ป˜ ๋‹ค๋ค„์•ผํ•œ๋‹ค. (๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ์–ด์•ผ ํ•œ๋‹ค.)

๋งŒ๋“ค์–ด์ง„ ๋„๋ฉ”์ธ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฑ…์ž„์„ ๋‹ด๋‹นํ•  ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค. ์ด๋Š” ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ๋ถ€ํ„ฐ ์ •์˜๋œ๋‹ค.

Showing. ์˜ˆ๋งค ์ƒ์„ฑ์˜ ์ฑ…์ž„ ํ• ๋‹น
Movie. ์˜ํ™” ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ ์ฑ…์ž„ ํ• ๋‹น
Discount Strategy. ํ• ์ธ ๊ฐ€๊ฒฉ์„ ๋‹ด๋‹นํ•˜๋Š” ์ฑ…์ž„์„ ํ• ๋‹น
Rule. ํ• ์ธ ์—ฌ๋ถ€๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ํ• ๋‹น

 

์ด์ œ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค. ์ž์‹ ์˜ ์ฑ…์ž„์ด ์•„๋‹Œ ์ผ์€, ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ๋™์ž‘์„ ์œ„์ž„ํ•œ๋‹ค.

์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์™„์„ฑํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค. ๊ฐ ์š”๊ตฌ์‚ฌํ•ญ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋‚˜๊ฐ„๋‹ค.

[์˜ํ™” ์˜ˆ๋งค]๋ผ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด, 4๊ฐ€์ง€ ๊ฐ์ฒด๊ฐ€ ํ˜‘๋ ฅํ•ด์•ผํ•œ๋‹ค. 
ํ• ์ธ ์ „๋žต
ํ• ์ธ ์—ฌ๋ถ€

๊ฐ์ฒด๋“ค์˜ ํ˜‘๋ ฅ๊ด€๊ณ„๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

๋ฌธ์ œ๋ฅผ ๊ฐ์ฒด๋“ค์˜ ํ˜‘๋ ฅ์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค.

์ด๋ฅผ ์ฑ…์ž„ ์œ„์ž„(delegated) ๋˜๋Š” ๋ถ„์‚ฐ(dispersed) ์ œ์–ด ์Šคํƒ€์ผ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

 

๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ๊ฐ์ฒด์•ˆ์— ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.

๊ฐ์ฒด๋Š” ์ž์‹ ์ด ๋งก์€ ์ฑ…์ž„๋งŒ ๋‹ด๋‹นํ•  ๋ฟ, ๋ณธ์ธ์ด ์–ด๋””์—์„œ ํ˜ธ์ถœ๋˜๋Š”์ง€์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

๋„คํŠธ์›Œํฌ๋‚˜ DB ๊ฐ™์€ ๊ณณ์— ์ข…์†์„ฑ์ด ์ƒ๊ธฐ๋ฉด์„œ ํ…Œ์ŠคํŠธ๋„ ์–ด๋ ต๊ณ , ๊ฐ์ฒด๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง€๊ณ , ๋ฐ์ดํ„ฐ ์‘์ง‘๋„๊ฐ€ ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ฆ‰, ํ”ํžˆ 4๋‹จ๊ณ„ ์•„ํ‚คํ…์ฒ˜ [ํ‘œํ˜„-์„œ๋น„์Šค-๋„๋ฉ”์ธ-์ธํ”„๋ผ]์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€๋ถ„์€ ์„œ๋น„์Šค์— ๋„˜๊ธด๋‹ค.

์„œ๋น„์Šค ๋ ˆ์ด์–ด๋Š” ๋„๋ฉ”์ธ์„ ์ด์šฉํ•ด์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜ ๋˜ํ•œ ์„œ๋น„์Šค ๋ ˆ์ด์–ด ๋‹จ์œ„๋กœ ๊ฑธ๋ฆฐ๋‹ค.

๋„๋ฉ”์ธ์€ ์–ด๋– ํ•œ ์ข…์†์„ฑ๋„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค. ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•„์š”ํ•œ ๊ฒƒ์„ ์ธํ”„๋ผ๋กœ ์ฝ์–ด์„œ ๋„๋ฉ”์ธ ๊ฐ์ฒด์— ์œ„์ž„ํ•˜๋Š” ์—ญํ• . Service

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์‹ฌ์‚ฌ -> ์„œ๋น„์Šค

๋„๋ฉ”์ธ ๊ด€์‹ฌ์‚ฌ -> ๋„๋ฉ”์ธ

์ˆ˜์ •ํ•  ๋•Œ ์–ด๋””๋ฅผ ๊ฑด๋“œ๋ ค์•ผํ• ๊นŒ? ๋ณ€๊ฒฝ์ด ์ „์ฒด์— ์˜ํ–ฅ์ด ๊ฐ„๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด DB๋ฅผ ์งœ๊ธฐ ์–ด๋ ต๋‹ค.

์™œ? ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ DB ์Šคํ‚ค๋งˆ๋Š” ๋ถˆ์ผ์น˜ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—.

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์œ ์—ฐ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ค‘์š”ํ•˜์ง€๋งŒ

DB๋Š” ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต, ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•˜๋‹ค. ์œ ์—ฐ์„ฑ์ด ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.

๊ทธ๋ž˜์„œ Mapper๋ฅผ ์จ์„œ ๊ฒฐํ•ฉ๋„๋ฅผ ๋Š๋Š” ๊ฒƒ์ด๋‹ค. (์ž„ํ”ผ๋˜์Šค ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ)

์–‘์ชฝ์ด ๊ฐ์ž์˜ ์—ญํ• ์„ ์ถฉ์‹คํžˆ ๋งก์„ ์ˆ˜ ์žˆ๋„๋ก. ๋”ฐ๋กœ ๋”ฐ๋กœ ๋†€ ์ˆ˜ ์žˆ๋„๋ก

Domain ๋ชจ๋ธ์€ Service๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. [๋„๋ฉ”์ธ ๊ฐ์ฒด]๋“ค์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘, ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด์„œ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋ฌด์—‡์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€?

๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€, ๋ชจ๋“  ๊ฒƒ์ด ๋ณ€ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค ๋ฟ์ด๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด๋Š” ์„ค๊ณ„๋„๊ฐ€ ์™„์„ฑ๋œ ๊ฑด์ถ•๋ฌผ์ด ์•„๋‹ˆ๋‹ค.

๊ณ ๊ฐ๊ณผ ๊ณ„์†ํ•ด์„œ ์†Œํ†ตํ•˜๋ฉด์„œ ๋Š์ž„์—†์ด ๋ณ€ํ™”ํ•˜๊ณ  ๊ฐœ์„ ๋œ๋‹ค.

๋„๋ฉ”์ธ ์ปจ์…‰ ๋˜ํ•œ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

์ฒ˜์Œ ๋งŒ๋“ค๋• ํŠธ๋žœ์žญ์…˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ DB๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํŽธํ•˜๊ณ , ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Š” ๋ณ€ํ™”๋ฅผ ๊ฐ๋‹นํ•˜๊ธฐ์—” ๋„ˆ๋ฌด ๋ฒ…์ฐจ๋‹ค. ์—ฌ๋Ÿฌ ์ฑ…์ž„์ด ํ•œ ๊ณณ์— ๋ญ‰์ณ์žˆ๊ณ , ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ, DB์™€๋„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ธฐ์— ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค. ๊ฒฐํ•ฉ๋„๊ฐ€ ๋„ˆ๋ฌด ๋†’๋‹ค.

๋˜ ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์•„์„œ, ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์„ ์ฐพ๊ธฐ ์–ด๋ ต๋‹ค. ์—ฌ๊ธฐ์ €๊ธฐ ๋‹ค ๋’ค์ ธ์•ผํ•œ๋‹ค.

 

โžก ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ๋‘๋ ค์›€์ด ์ƒ๊ธด๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ๋ณ€๊ฒฝ์ด ์—ฌ๊ธฐ์ €๊ธฐ ์ „ํŒŒ๋˜๊ธฐ ๋•Œ๋ฌธ

๋˜ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋„ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์ด ์ˆจ์–ด์žˆ๋‹ค. (์•”๋ฌต์ ์ด๋‹ค)

์ฝ”๋“œ ์ƒ์—์„œ ์ค‘๋ณตํ• ์ธ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ฐพ์„ ์ˆ˜ ์žˆ์„๊นŒ?

๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ, ์ค‘์š”ํ•œ ๊ฒƒ

์ผ์ฐ, ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฒฐ์ •ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ

๊ฐ์ฒด์ง€ํ–ฅ์€ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ํ™”(Movie)๋Š” ํ• ์ธ ์ •์ฑ…(DiscountStrategy)์— ๋”ฐ๋ผ ๊ฐ€๊ฒฉ์„ ํ• ์ธ(Rule) ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด

 

์ด๋ ‡๊ฒŒ ๋„๋ฉ”์ธ์„ ์ถ”์ƒํ™”ํ•ด์„œ ๋ฝ‘๊ณ , ๋ฝ‘์€๊ฒŒ ๊ฒฐ๊ตญ Domain Layer Architecture

 

๋„๋ฉ”์ธ ๋ชจ๋ธ์€ ๋ณต์žก์„ฑ์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋กœ ๋งŒ๋“  ๊ฒƒ

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๊ณ„์‚ฐ๋“ฑ ํฌํ•จ๋œ ๋ณต์žกํ•˜๊ณ   ๋Š์ž„์—†์ด ๋ณ€ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค๋ฉด ์ข‹์€ ๋ฐฉ๋ฒ•

 

๐Ÿ’ญ ์š”๊ตฌ์‚ฌํ•ญ์ด ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋ ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”?

๋ชฐ๋ผ์š”. Movie๋ฅผ ์ œ์™ธํ•˜๊ณค ์ „๋ถ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์–ด์š”.

๊ทธ๋ž˜์„œ ์ตœ๋Œ€ํ•œ '๋‹จ์ˆœํ•˜๊ณ  ๊น”๋”ํ•˜๊ฒŒ' ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์†ํ•ด์„œ ๋ฆฌํŒฉํ† ๋ง ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ