DAY 23
์ค๋ ์ฝ์ ๋ฒ์
12์ฅ ๋์์ฑ ~p233
๐ ์ฑ
์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ์ ์จ๋ณด์ธ์.
-
์ผ๋จ ๋์์ฑ๊ณผ ๊น๋ํ ์ฝ๋๋ ์๋ฆฝํ๊ธฐ ์ด๋ ต๋ค๋ ์ ์ ์๊ณ ๊ฐ์.
-
์ด ๋จ์์์๋ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๋๋ฆฌ๋ ์ด์ ์ ์ด๋ ค์์ ๋
ผํ๋ค. ๋ํ ์ด ์ด๋ ค์์ ๋์ฒํ๊ณ ๊นจ๋ํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ์ ์ํ๋ค.
-
๋์์ฑ์ด ํ์ํ ์ด์
- ๋์์ฑ์ ๊ฒฐํฉ์ ์์ ๋ ์ ๋ต์ด๋ค. ์ฆ, ๋ฌด์๊ณผ ์ธ์ ๋ฅผ ๋ถ๋ฆฌํ๋ ์ ๋ต์ด๋ค.
- ๋ฌด์๊ณผ ์ธ์ ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ๊ตฌ์กฐ์ ๊ด์ ์์ ํ๋ก๊ทธ๋จ์ด ๊ฑฐ๋ํ ํ๋์ ๋ฃจํ๊ฐ ์๋๋ผ ์์ ํ๋ ฅ ํ๋ก๊ทธ๋จ ์ฌ๋ฟ์ผ๋ก ๋ณด์ธ๋ค.
- ํ๋ฒ์ ํ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋จ์ผ ์ค๋ ๋๋ ๋๊ท๋ชจ ํ๋ก๊ทธ๋จ์์ ๋๋ฌด ๋๋ฆฌ๋ค. => ๋ค์ค ์ค๋ ๋๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌํด์ผํ๋ ์ด์ => ๋์์ฑ์ด ์ค์ํ ์ด์
-
๋ฏธ์ ๊ณผ ์คํด
- ๋์์ฑ์ ํญ์ ์ฑ๋ฅ์ ๋ํ์ค๋ค.
- ๋์์ฑ์ ๊ตฌํํด๋ ์ค๊ณ๋ ๋ณํ์ง ์๋๋ค.
- ์น ๋๋ EJB ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋์์ฑ์ ์ดํดํ ํ์๊ฐ ์๋ค. (ํ ...)
-
๋์์ฑ์ ์ค์ฒด
- ๋์์ฑ์ ๋ค์ ๋ถํ๋ฅผ ์ ๋ฐํ๋ค.
- ๋์์ฑ์ ๋ณต์กํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋์์ฑ ๋ฒ๊ทธ๋ ์ฌํํ๊ธฐ ์ด๋ ต๋ค.
- ๋์์ฑ์ ๊ตฌํํ๋ ค๋ฉด ํํ ๊ทผ๋ณธ์ ์ธ ์ค๊ณ ์ ๋ต์ ์ฌ๊ณ ํด์ผํ๋ค.
-
๋์์ฑ ๋ฐฉ์ด ์์น : ๋์์ฑ ์ฝ๋๊ฐ ์ผ์ผํค๋ ๋ฌธ์ ๋ก๋ถํฐ ์์คํ
์ ๋ฐฉ์ดํ๋ ์์น
- ๋จ์ผ ์ฑ
์ ์์น(SRP)
- ๋์์ฑ์ ๋ณต์ก์ฑ ํ๋๋ง์ผ๋ก๋ ๋ฐ๋ก ๋ถ๋ฆฌํ ์ด์ ๊ฐ ์๋ค. ์ฆ, ๋์์ฑ ๊ด๋ จ ์ฝ๋๋ ๋ค๋ฅธ ์ฝ๋์ ๋ถ๋ฆฌํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
- ๊ถ์ฅ์ฌํญ : ๋์์ฑ ์ฝ๋๋ ๋ค๋ฅธ ์ฝ๋์ ๋ถ๋ฆฌํ๋ผ.
- ๋ฐ๋ฆ ์ ๋ฆฌ : ์๋ฃ๋ฒ์๋ฅผ ์ ํํ๋ผ
- ์ค๋ ๋ ๊ฐ์ ๊ฐ์ญ ๋๋ฌธ์ ์์์น ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ ์ ์๋ค.
- ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณต์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋ ๋ด ์๊ณ์์ญ์ synchronized ํค์๋๋ก ๋ณดํธํ๋ผ ๊ถ์ฅํ๋ค.
- ๊ถ์ฅ์ฌํญ : ์๋ฃ๋ฅผ ์บก์ํํ๋ผ. ๊ณต์ ์๋ฃ๋ฅผ ์ต๋ํ ์ค์ฌ๋ผ
- ๋ฐ๋ฆ ์ ๋ฆฌ : ์๋ฃ ์ฌ๋ณธ์ ์ฌ์ฉํ๋ผ
- ๊ณต์ ์๋ฃ๋ฅผ ์ค์ด๋ ค๋ฉด ์ฒ์๋ถํฐ ๊ณต์ ํ์ง ์๋ ๋ฐฉ๋ฒ์ด ์ ์ผ ์ข๋ค.
- ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํด ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋ ๊ฐ ์ค๋ ๋๊ฐ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํด ์ฌ์ฉํ ํ ํ ์ค๋ ๋๊ฐ ํด๋น ์ฌ๋ณธ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ์ฌ๋ณธ์ผ๋ก ๋๊ธฐํ๋ฅผ ํผํ ์ ์๋ค๋ฉด ๋ณต์ฌ ๋น์ฉ๋ณด๋ค ์ค์ด๋๋ ๋น์ฉ์ด ํด๊ฒ์ด๋ค.
- ๋ฐ๋ฆ ์ ๋ฆฌ : ์ค๋ ๋๋ ๊ฐ๋ฅํ ๋
๋ฆฝ์ ์ผ๋ก ๊ตฌํํ๋ผ
- ๋ค๋ฅธ ์ค๋ ๋์ ์๋ฃ๋ฅผ ๊ณต์ ํ์ง ์์์ผํ๋ค.
- ๊ฐ ์ค๋ ๋๋ ํด๋ผ์ด์ธํธ ์์ฒญ ํ๋๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ ๋ชจ๋ ์ ๋ณด๋ ๋น๊ณต์ ์ถ์ฒ์์ ๊ฐ์ ธ์ ๋ก์ปฌ ๋ณ์์ ์ ์ฅํ๋ค.
- ๊ถ์ฅ์ฌํญ : ๋
์์ ์ธ ์ค๋ ๋๋ก, ๊ฐ๋ฅํ๋ฉด ๋ค๋ฅธ ํ๋ก๋ ์์์, ๋๋ ค๋ ๊ด์ฐฎ๋๋ก ์๋ฃ๋ฅผ ๋
๋ฆฝ์ ์ธ ๋จ์๋ก ๋ถํ ํ๋ผ.
๐์ค๋ ์ฝ์ ์๊ฐ์? ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฐ๋ณ๊ฒ ์ ์ด๋ณด์ธ์
-
์ฒ์์๋ ์ฑ๊ธ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ JS๋ฅผ ๊ณต๋ถํ๊ณ ์์ด์ ์ด ๋จ์์ ์ฝ์ง ์์๋ ค๊ณ ํ๋ค. ํ์ง๋ง ์๊ฐํด๋ณด๋ ๋น๋๊ธฐ์ฒ๋ฆฌ๋ก ์ ์ฌ ๋์์ฑ?์ ๊ตฌํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ธ๋ผ์ฐ์ ์์ง์ ๋ ์ฌ๋ฆฌ๋ฉฐ ์ฝ์ผ๋ฉด ์ข์๊ฒ ๊ฐ์ ์ฝ์ด๋ณด์๋ค. ์ญ์ ๋ฉํฐ ์ค๋ ๋ ๋ด์ฉ์ ์ ๋ง ์ด๋ ค์ ๋ค. ๊ฐ๋
์์ฒด๋ ์ด๋ ต์ง ์์ง๋ง ๋ด๋ถ์ ์ธ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ ์ ์ด ํผ๋ฏธํด์ง๋ค. ํ์ง๋ง ์ค๊ฐ์ '๋ฏธ์ ๊ณผ ์คํด' ๋ถ๋ถ์์ ๋ผ๋ฅผ ๋ง์ ์ด์ฌํ ์ฝ์๋ค.
-
์์งํ ๋งํ๋ฉด JS๋ก ๊ณ์ ๊ฐ๋ฐ์ ํ ๊ฒฝ์ฐ ๊ทธ๋ ๊ฒ ์ ์ฉํ ๋ด์ฉ์ ์๋๊ฒ ๊ฐ๋ค. ๊ทธ๋ฅ ๋ฉํฐ ์ค๋ ๋์ ์ฃผ์์ ๊ณผ ๊ฐ๋
, ํ์์ฑ๋ฑ์ ์ดํดํ๊ณ ๋์ด๊ฐ๋ ๋ ๋ฏํ๋ค.
๐ ๊ถ๊ธํ ๋ด์ฉ์ด ์๊ฑฐ๋, ์ ์ดํด๋์ง ์๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ด๋ณด์ธ์.
- synchronized : ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๊ฐ ํ๊ฐ์ ์์์ ์ฌ์ฉํ๊ณ ์ ํ ๋, ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ํด๋น ์ค๋ ๋๋ฅผ ์ ์ธํ๊ณ ๋๋จธ์ง ์ค๋ ๋๋ค์ ๋ฐ์ดํฐ์ ์ ๊ทผ ํ ์ ์๋๋ก ๋ง๋ ๊ฐ๋
์ถ์ฒ : https://coding-start.tistory.com/68
โ ์๊ฐ 3์ค ์์ฝ
- ๋์์ฑ ๊ตฌํ์ ํ์์ฑ๊ณผ ์ด๋ ค์์ ๋ฐฐ์ ๋ค.
- ๋์์ฑ์ ์ฌ์ฉํด๋ ํญ์ ์ฑ๋ฅ์ด ์ข์์ง๋ ๊ฒ์ ์๋๋ฏ๋ก ์ ์ค๊ณํ์ฌ ๊ตฌํํด์ผํ๋ค.
- ์น ๋๋ EJB ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํด๋ ๋์์ฑ์ ์ดํดํด์ผ ํ๋ค.