Skip to content

[๐Ÿš€ ์‚ฌ์ดํด2 - ๋ฏธ์…˜ (๊ธฐ๋ฌผ ํ™•์žฅ + DB ์ ์šฉ)] ์ดํ”„ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#347

Open
jihwankim128 wants to merge 32 commits intowoowacourse:jihwankim128from
jihwankim128:step2

Conversation

@jihwankim128
Copy link
Copy Markdown

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฒ ๋ฃจ์Šค ์ •๋ง ๋Šฆ์—ˆ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž..
cycle1์—์„œ ๋ถ€์ง„ํ–ˆ๋˜ ํƒ“์— cycle2 ๋ฅผ ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ์ง„ํ–‰ํ–ˆ๋„ค์š”..

์ €๋Š” cycle1์—์„œ ๋น ๋ฅธ PR์„ ๋ชฉํ‘œ๋กœ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์˜คํžˆ๋ ค ๋‹ค์‹œ ๋ณด๋‹ˆ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“  ์ฝ”๋“œ๊ฐ€ ๋์Šต๋‹ˆ๋‹ค...
๊ทธ๋ž˜์„œ ์ด๋ฒˆ cycle2์—์„œ๋Š” ์ œ๊ฐ€ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋ถ„๋ฆฌ์™€ ์ฑ…์ž„์— ์ง‘์ค‘ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

์ด์–ด์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜ ํ”ผ๋“œ๋ฐฑ ๋ฐ”๋ผ๋Š” ๋ถ€๋ถ„ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. TransactionTemplate๊ณผ Proxy ํŒจํ„ด์„ ํ†ตํ•œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— DB ๊ธฐ์ˆ ์ธ ํŠธ๋žœ์žญ์…˜ ์ฝ”๋“œ๊ฐ€ ์นจ๋ฒ”ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด JanggiTxService๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋งค๋ฒˆ Connection์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์€ 2๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ์žฅ๊ธฐํŒ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ๊ธฐ๋ฌผ ์œ„์น˜๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ผ€์ด์Šค
  2. ๋‘ ๋ณ€๊ฒฝ์€ ๊ฐ™์€ ์ž‘์—… ๋‹จ์œ„์ธ๋ฐ, ๋งค ๋ฒˆ ๋‹ค๋ฅธ ์ปค๋„ฅ์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ Connection์„ ๊ณต์œ ํ•˜๊ณ  ๊ณต์œ ๋œ Connection์€ ํŠธ๋žœ์žญ์…˜์ด ๋๋‚ฌ์„ ๋•Œ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹์œผ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๋ฏผํ•œ ์ง€์ 

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

2. ์ƒํƒœ ํŒจํ„ด(State Pattern)์„ ์ด์šฉํ•œ ์žฅ๊ธฐ ๊ฒŒ์ž„ ํ๋ฆ„ ์ œ์–ด

์žฅ๊ธฐ ๊ฒŒ์ž„์˜ ๋ณต์žกํ•œ ์ƒํƒœ(์ง„ํ–‰ ์ค‘, ๋น…์žฅ ํ•ฉ์˜, ์ข…๋ฃŒ ๋“ฑ)๋ฅผ JanggiState ์ถ”์ƒ ํด๋ž˜์Šค์™€ ํ•˜์œ„ ์ƒํƒœ ๊ฐ์ฒด๋“ค๋กœ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Running, BigJang, Finished, BigJangDone ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ์ •์˜ํ•˜๊ณ , state.next(board)๋ฅผ ํ†ตํ•ด ์ƒํƒœ ์ „์ด๊ฐ€ ์ผ์–ด๋‚˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ '๋น…์žฅ'์ด๋ผ๋Š” ํŠน์ˆ˜ํ•œ ๋„๋ฉ”์ธ ๊ทœ์น™์„ ์ƒํƒœ๋กœ ๋…น์—ฌ๋‚ด์–ด JanggiGame ํด๋ž˜์Šค์˜ ๋งŽ์€ ์ฑ…์ž„์„ ํ”ผํ•˜๊ฒŒ ์„ค๊ณ„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๋ฏผํ•œ ์ง€์ 

    public boolean canPlaying() {
        return state.canPlaying();
    }

    public boolean isBigJang() {
        return state.status() == GameStatus.BIG_JANG;
    }

    public boolean isBigJangDone() {
        return state.status() == GameStatus.BIG_JANG_DONE;
    }
  • state๊ฐ€ delegate ์ฒ˜๋Ÿผ ๋‹จ์ˆœํžˆ ํ˜ธ์ถœํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ดœํžˆ depth๋งŒ ๋Š˜์–ด๋‚œ๊ฒŒ ์•„๋‹Œ๊ฐ€ ํ•˜๋Š” ๊ณ ๋ฏผ๋„ ๋ฉ๋‹ˆ๋‹ค...
  • ๋ฐ˜๋ฉด์— ์žฅ๊ธฐ ์ƒํƒœ๋Š” ์žฅ๊ธฐ์— ์ข…์†๋œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋˜ ์ ์ ˆํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์–‘ ์ธก์˜ ์ƒ๊ฐ์ด ์˜ค๊ฐ€๋Š”๋ฐ ๋ฒ ๋ฃจ์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

3. ์ด์ „ ๋ฆฌ๋ทฐ

cycle1์—์„œ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋‘ ๋ฆฌ๋ทฐ์— ๋Œ€ํ•ด ์ ์šฉํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

ํŒ€ ์ •๋ณด๋ฅผ Formation ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์‹œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค~

  • TeamFormation์œผ๋กœ ๋ž˜ํ•‘ํ–ˆ๋Š”๋ฐ, ์˜๋„ํ•˜์‹  ๋ฐ”๊ฐ€ ๋งž์„๊นŒ์š”?

Path๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋กœ์ง์„ MoveStrategy๋กœ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๊ฐœ๋ณ„ ๊ธฐ๋ฌผ ํด๋ž˜์Šค์•ˆ์— ๋„ฃ๋Š” ๊ฒƒ๋„ ์ข‹์•„๋ณด์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ด๋™์„ ์œ„ํ•œ ๋กœ์ง์ด ํฉ์–ด์ ธ์„œ ๊ตฌํ˜„๋œ ๊ฒƒ ๊ฐ™์•„์š”. Cannon๊ณผ Chariot์— ์ค‘๋ณต๋œ ๋กœ์ง์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธดํ•˜์ง€๋งŒ ๊ฐ ๊ธฐ๋ฌผ๋ณ„๋กœ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ์ค‘๋ณต์ด์—ฌ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™๋„ค์š”.

  • ์ด๋™ ๊ด€๋ จ ๋กœ์ง์„ ์–ด๋–ป๊ฒŒ ํ• ์ง€ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ abstract๋ฅผ ํ†ตํ•ด ๊ถ์„ฑ, ์ง์„  ์žฅ๊ฑฐ๋ฆฌ ๊ธฐ๋ฌผ์„ ๊ตฌ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? (์—ฌ๊ธฐ๊ฐ€ ์ œ์ผ ์–ด๋ ต์Šต๋‹ˆ๋‹ค..)

4. ๊ทธ ์™ธ

๊ทธ ์™ธ๋Š” third party ๊ด€๋ จ ์ž‘์—…์ด๋ผ, ์•„์ง์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ๊ฐ์ฒด์ง€ํ–ฅ์— ์ง‘์ค‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์—ฌ์œ ๊ฐ€ ๋˜์‹ ๋‹ค๋ฉด ๊ทธ ์™ธ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋„ ์ž์„ธํ•˜๊ฒŒ ๋ฆฌ๋ทฐํ•ด์ฃผ์‹œ๋ฉด ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

์ด๋ฒˆ ๋ฏธ์…˜๋„ ๋ฆฌ๋ทฐ ์ž˜๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ”ฅ

* ๊ต์ฐจ์ ์—์„œ ์ˆ˜ํ‰/์ˆ˜์ง ์ด๋™ ์‹คํŒจํ•˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant