- ์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค
- ์ถ์ํ
- ๋คํ์ฑ
- ์์กด์ฑ ์ฃผ์
- ๋์์ธํจํด - ์ฑ๊ธํค
1. ์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค
์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
๊ณตํต์
- ์ถ์ ๋ฉ์๋(๊ตฌํ๋ถ ์์ด ์ ์ธ๋ถ๋ง ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋)๋ก ์ด๋ฃจ์ด์ง
- ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์
- ์ฌ๋ฌ ๊ณณ์ ์ฌ์ฉ๋ ๊ณตํต๋ ๊ธฐ๋ฅ์ ๋ํ ๊ตฌํ์ ๊ฐ์ ํ๊ธฐ ์ํ ๊ธฐ๋ฅ
์ถ์ํด๋์ค = extends ์์ ์ ๊ธฐ๋ฅ๋ค์ ํ์๋ก ํ์ฅ ์ธํฐํ์ด์ค = implements ์ธํฐํ์ด์ค์ ์ ์๋ ๋ฉ์๋๋ฅผ ๊ฐ ํด๋์ค์ ๋ชฉ์ ์ ๋ง๊ฒ ๋์ผํ ๊ธฐ๋ฅ์ผ๋ก ๊ตฌํ
์ถ์ ํด๋์ค(Abstract Class)
- ํ๋ ์ด์์ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ ํด๋์ค
- ์ถ์ ๋ฉ์๋๋ฅผ ์ ์ธํ์ฌ ์์์ ํตํด ํ์ํด๋์ค์์ ๋ฐ๋์ ๊ตฌํํ๋๋ก ๊ฐ์
- ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ ํด๋์ค
- ์์ ํค์๋๋ก extends ์ฌ์ฉ
- ํ์ ํด๋์ค์์ ๋ฉ์๋์ ๊ตฌํ์ ๊ฐ์ ํด์ผ ํจ(Override)
- ๋ค์ค ์์์ด ๋ถ๊ฐ๋ฅํจ
์ธํฐํ์ด์ค(Interface)
- ์ถ์ ๋ฉ์๋์ ์์๋ก๋ง ์ด๋ฃจ์ด์ง
- ์ธํฐํ์ด์ค์ ์ ์ธ๋์ด์๋ ์ถ์ ๋ฉ์๋๋ฅผ Implementsํ๋ ํด๋์ค์์ ๋ฐ๋์ ๊ตฌํํ๋๋ก ๊ฐ์
- ๋ค์ค ์์ ๊ฐ๋ฅ : ๋ชจ๋ ๋ฉ์๋๊ฐ ์ถ์ ๋ฉ์๋๋ผ ์์ ๋ฐ๋ ํด๋์ค์์ ์ฌ์ ์ํ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ค์ค ์์์ ๋ชจํธ์ฑ์ด ๋ฐ์ํ์ง ์์
NOTE
์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
์ธํฐํ์ด์ค๋ ์ถ์ ๋ฉ์๋์ ์์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๋ค์ค ์์์ ์ง์ํฉ๋๋ค. ์ถ์ ํฌ๋์ค๋ ์ถ์ ๋ฉ์๋์ ์ผ๋ฐ ๋ฉ์๋ ๋ชจ๋๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ ๋ค์ค ์์์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
NOTE
์ ์ธํฐํ์ด์ค๊ฐ ๋ค์ค ์์์ ์ง์ํด์ผ ํ๋ค๊ณ ์๊ฐํ๋์?
์ธํฐํ์ด์ค๋ ๋ฉ์๋์ ์๊ทธ๋์ฒ๋ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์์๋ฐ์ ํด๋์ค์์ ์ฌ์ ์ํ์ฌ ์ฌ์ฉํ๋ฏ๋ก ๊ตฌํ์ ์ถฉ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ถ์ ํด๋์ค๋ ์ํ๋ฅผ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋ค์ค ์์์ ์ถฉ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
NOTE
์ธํฐํ์ด์ค์ ์ถ์ ํด๋์ค ์ค ์ด๋ ๊ฒ์ ์ ํํ ์ง ๊ฒฐ์ ํ๋ ๊ธฐ์ค์ ๋ฌด์์ธ๊ฐ์?
๊ณตํต๋ ์ํ๋ฅผ ๊ณต์ ํด์ผ ํ ๋๋ ์์ ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ๋ช ํํ ๋ ์ถ์ ํด๋์ค๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ๊ณ , ๋ค์ํ ๋์์ ๊ตฌํํ๊ฑฐ๋ ๋ค์ค ์์์ด ํ์ํ ๋๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด ์ ๋ฆฌํฉ๋๋ค.
NOTE
์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์๋์?
์ถ์ ํด๋์ค๋ ๊ณตํต ์ํ์ ๊ธฐ๋ณธ ๊ตฌํ์ ์ ๊ณตํ๊ณ ์ธํฐํ์ด์ค๋ ์ญํ ์ ์ ์ํ๋๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2. ์ถ์ํ
์ถ์ํ๋ ๋ฌด์์ด๋ฉฐ, ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํํ ์ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์
์ถ์ํ
- ๊ฐ์ฒด์ ๊ณตํต์ ์ธ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ์ถ์ถํ์ฌ ์ ์ํ๋ ๊ฒ
- ํ์ ํด๋์ค๋ค์ ๊ณตํต์ฑ์ ๋ชจ์ ์์ํด๋์ค๋ฅผ ์ ์ํ ์ ์๋ ๊ฒ
ex)
์๋์ฐจ์ ์คํ ๋ฐ์ด๋ ์ ์ง๊ณผ ํ์ง์ ํ ์ ์์
โ ์๋์ฐจ์ ์คํ ๋ฐ์ด๋ผ๋ ํ์ ํด๋์ค๋ค์ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ(์ ์ง๊ณผ ํ์ง)์ ์ถ์ถํ์ฌ ์ด๋์๋จ์ด๋ผ๋ ์์ํด๋์ค์ ์ ์
NOTE
์ถ์ํ๋ ๋ฌด์์ด๋ฉฐ, ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํํ ์ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์
์ถ์ํ๋ ๊ฐ์ฒด์ ๊ณตํต์ ์ธ ํน์ฑ์ ์ถ์ถํ์ฌ ์์ ํด๋์ค๋ก ์ ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ฐจ์ ์คํ ๋ฐ์ด ํด๋์ค์ ๊ฐ๊ฐ ์ ์ง๊ณผ ํ์ง ๊ธฐ๋ฅ์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋ ์ด ๊ธฐ๋ฅ์ โ์ด๋์๋จโ์ด๋ผ๋ ์์ ํด๋์ค์ ์ ์ํ์ฌ ์ถ์ํ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
NOTE
์ถ์ํ๋ฅผ ์ง๋์น๊ฒ ์ฌ์ฉํ๋ฉด ์ด๋ค ๋จ์ ์ด ์์๊น์?
์ค๊ณ๊ฐ ๋ณต์กํด์ง๊ณ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค. ๊ณผ๋ํ ์ถ์ํ๋ ๋ถํ์ํ ์ค๋ฒํค๋๋ฅผ ์ด๋ํฉ๋๋ค.
3. ๋คํ์ฑ
๋คํ์ฑ์ ํ๋ก์ ํธ์์ ์ด๋ป๊ฒ ํ์ฉํ๋์ง ์๋ฅผ ๋ค์ด ์ค๋ช ํด์ฃผ์ธ์
๋คํ์ฑ
- ์ด๋ค ๊ฐ์ฒด์ ์์ฑ์ด๋ ๊ธฐ๋ฅ์ด ๋งฅ๋ฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ญํ ์ ์ํํ ์ ์๋ ๊ฐ์ฒด ์งํฅ์ ํน์ฑ
- ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
- ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๊ฐ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ญํ ์ ์ํํ๋ ๊ฒ
๊ณตํต ๋ชจ๋์ Base Exception์ ๊ตฌํํ๊ณ ๊ฐ ์๋น์ค ๋ชจ๋์์ Exception์ ํ์ฅํ์ฌ ํ์ ์์ธ ํด๋์ค๋ค์ด ๋ค๋ฅธ ๋์์ ๊ตฌํํ๋๋ก ๊ฐ๋ฐํจ
NOTE
๋คํ์ฑ์ ํ๋ก์ ํธ์์ ์ด๋ป๊ฒ ํ์ฉํ๋์ง ์๋ฅผ ๋ค์ด ์ค๋ช ํด์ฃผ์ธ์
๊ณตํต ๋ชจ๋์ Base Exception์ ๊ตฌํํ๊ณ ๊ฐ ์๋น์ค ๋ชจ๋์์ Exception์ ํ์ฅํ์ฌ ํ์ ์์ธ ํด๋์ค๋ค์ด ๋ค๋ฅธ ๋์์ ๊ตฌํํ๋๋ก ๊ฐ๋ฐํ์์ต๋๋ค.
NOTE
๋คํ์ฑ์ ์ ์ฉํ์ง ์๊ณ ๊ตฌํํ์ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ์ ๋ฌด์์ธ๊ฐ์?
๋คํ์ฑ์ ์ ์ฉํ์ง ์์ผ๋ฉด ๋์ผํ ๋์์ ํ๋ ์ฝ๋๊ฐ ์ฌ๋ฌ๊ณณ์ ๋ฐ๋ณต๋์ด ์ฝ๋์ ์ค๋ณต์ด ๋์ด๋ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋๋ค.
4. ์์กด์ฑ ์ฃผ์
์์กด์ฑ ์ฃผ์ ์ด๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ฅผ ์ ์ฉํ์ ๋์ ์ฅ์ ์ ์ค๋ช ํด์ฃผ์ธ์
์์กด์ฑ ์ฃผ์
- ๊ฐ์ฒด๊ฐ ํ์๋ก ํ๋ ์์กด ๊ฐ์ฒด๋ฅผ ์ธ๋ถ์์ ์ฃผ์ ํ๋ ๋ฐฉ์
- ์์ฑ์ ์ฃผ์
, ์ธํฐ ์ฃผ์
,์ธํฐํ์ด์ค ์ฃผ์
- ์์ฑ์ ์ฃผ์ : ๊ฐ์ฒด ์์ฑ ์์ ์ ์์กด์ฑ ์ฃผ์
- ์ธํฐ ์ฃผ์ : ๊ฐ์ฒด ์์ฑ ํ ์ธํฐ ๋ฉ์๋๋ฅผ ํตํด ์์กด์ฑ ์ฃผ์
- ์ธํฐํ์ด์ค ์ฃผ์ : ์์กด์ฑ ์ฃผ์ ์ ์ํ ๋ณ๋์ ์ธํฐํ์ด์ค ์ฌ์ฉ
์ฅ์
- ํด๋์ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถค
- ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ
- ์ ์ง๋ณด์์ฑ ํฅ์
- ๋จ์ ํ ์คํธ ์ฉ์ด์ฑ ์ฆ๊ฐ
NOTE
์์กด์ฑ ์ฃผ์ ์ด๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ฅผ ์ ์ฉํ์ ๋์ ์ฅ์ ์ ์ค๋ช ํด์ฃผ์ธ์
์์กด์ฑ ์ฃผ์ ์ ๊ฐ์ฒด ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ์ฃผ์ ํ๋ ์ค๊ณ ๋ฐฉ์ ์ ๋๋ค. ์์ฑ์ ์ฃผ์ , ์ธํฐ ์ฃผ์ , ํ๋ ์ฃผ์ ์ผ๋ก ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์์กด์ฑ ์ฃผ์ ์ ์ฌ์ฉํ๋ฉด ํด๋์ค ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ฝ๋์ ์ฌ ์ฌ์ฉ์ฑ์ ์ฆ๊ฐ์ํค๋ฉฐ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
NOTE
์์ฑ์ ์ฃผ์ ๊ณผ ์ธํฐ ์ฃผ์ ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์? ๊ฐ๊ฐ์ ์ฅ๋จ์ ๋ ์ค๋ช ํด์ฃผ์ธ์.
์์ฑ์ ์ฃผ์ ์ ์์กด์ฑ ๊ฐ์ฒด๋ฅผ ํด๋์ค์ ์์ฑ์๋ฅผ ํตํด ์ฃผ์ ํ๋ ๋ฐฉ์์ ๋๋ค. ์ธํฐ ์ฃผ์ ์ ์์กด์ฑ ๊ฐ์ฒด๋ฅผ ์ธํฐ ๋ฉ์๋๋ฅผ ํตํด ์ฃผ์ ํ๋ ๋ฐฉ์์ ๋๋ค. ์์ฑ์ ์ฃผ์ ์ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ๊ณ ํ์ํ ์์กด์ฑ์ด ๋ช ํํ ์ ์๋๋ ์ฅ์ ์ด ์์ง๋ง ๋์ค์ ์์กด์ฑ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์ธํฐ ์ฃผ์ ์ ์์กด์ฑ์ ์ ํ์ ์ผ๋ก ์ฃผ์ ํ ์ ์๊ณ ์์กด์ฑ ์ฃผ์ ์์ ์กฐ์ ์ด ๊ฐ๋ฅํด ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง ๋ถ์์ ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.
5. ๋์์ธ ํจํด - ์ฑ๊ธํค
๋์์ธ ํจํด ์ค ์ฑ๊ธํค ํจํด์ ์ค๋ช ํ๊ณ , ์ค์ ๋ก ๊ตฌํํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ์ด์ผ๊ธฐํด์ฃผ์ธ์
์ฑ๊ธํค ํจํด (Singleton Pattern)
- ํน์ ํด๋์ค๊ฐ ๋จ ํ๋๋ง์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ๊ธฐ ์ํ ํจํด
- ์์ฑ์๋ฅผ ์ฌ๋ฌ๋ฒ ํธ์ถํ๋๋ผ๋ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์กด์ฌํ๋๋ก ๋ณด์ฅํ์ฌ ๋์ผ ํ ๊ฐ์ฒด ์ธ์คํด์ค์ ์ ๊ทผํ๋๋ก ํจ
- ๊ฐ์ฒด๋ฅผ ํ์ํ ๋๋ง๋ค ์์ฑํ๋๊ฒ์ด ์๋ ๋จ ํ๋ฒ๋ง ์์ฑํ์ฌ ์ ์ญ์์ ์ด๋ฅผ ๊ณต์ ํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํจ
- private ์์ฑ์๋ฅผ ๊ฐ์ ธ์ผ ํจ
์ฅ์
- ์ ์ผํ ์ธ์คํด์ค
- ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
- ์ง์ฐ ์ด๊ธฐํ
๋จ์
- ๊ฒฐํฉ๋ ์ฆ๊ฐ
- ํ ์คํธ ๋ณต์ก์ฑ
- ์ํ๊ด๋ฆฌ ์ด๋ ค์
- ์ ์ญ์์ ์ ๊ทผ ๊ฐ๋ฅ : ๋ฌด๋ถ๋ณํ ์ฌ์ฉ์ ๋ง๊ธฐ ํ๋ฆ
NOTE
๋์์ธ ํจํด ์ค ์ฑ๊ธํค ํจํด์ ์ค๋ช ํ๊ณ , ์ค์ ๋ก ๊ตฌํํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ์ด์ผ๊ธฐํด์ฃผ์ธ์
์ฑ๊ธํค ํจํด์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋จ ํ๋๋ง ์์ฑํ๊ณ ์ ์ญ์ ์ผ๋ก ๊ณต์ ํ๋ ๋์์ธ ํจํด์ ๋๋ค. ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด๋ ๋ก๊ทธ ๊ธฐ๋ก ๋ฑ ํ๋์ ๊ฐ์ฒด๋ง ์์ด์ผ ํ๋ ๊ณณ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฑ๊ธํค ๊ฐ์ฒด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ ๋์ ๊ณ์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์์ฑ ์์ ์ ์ ์ ํ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ๋ ์ ์ญ์ ์ผ๋ก ๊ณต์ ๋๋ ๊ฐ์ฒด์ด๋ฏ๋ก ๋์์ฑ ๋ฌธ์ ์์ด ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
NOTE
์ธํฐํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๊ตฌํํ๋ ํด๋์ค์์ ๋ฉ์๋ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ์ด๋ป๊ฒ ํด๊ฒฐํ์๊ฒ ์ต๋๊น?
์ธํฐํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๊ตฌํํ ๋ ๋ฉ์๋ ์ด๋ฆ์ด ๋์ผํ ๊ฒฝ์ฐ, ๊ตฌํ ํด๋์ค์์ ํด๋น ๋ฉ์๋๋ฅผ ๋ช ์์ ์ผ๋ก ์ฌ์ ์(Override)ํด์ผ ํฉ๋๋ค. ์ด ๋ฐฉ์์ผ๋ก ์ถฉ๋์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
NOTE
์ฑ๊ธํค ํจํด์ด ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ์ธ์.
๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ธ์คํด์ค๊ฐ ๋์์ ์์ฑ๋ ์ ์๋ ์กฐ๊ฑด ๊ฒฝ์(Race Condition)์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ ๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋์์ getInstance ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์ฑ๊ธํค ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ ์์ฑ๋ ์ํ์ด ์์ต๋๋ค.
- ํด๊ฒฐ ๋ฐฉ๋ฒ:
- Synchronized ํค์๋ ์ฌ์ฉ:
getInstance
๋ฉ์๋์ ๋๊ธฐํ๋ฅผ ์ ์ฉํ์ฌ ์ค๋ ๋ ์์ ์ฑ์ ํ๋ณดํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๊ธฐํ๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. - ์ด์ค ๊ฒ์ฌ ๋ฝ(Double-Checked Locking): ์ฑ๋ฅ์ ๊ณ ๋ คํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ง ๋๊ธฐํํ๋๋ก ๊ตฌํํฉ๋๋ค.
- ์ด๋ฅธ ์ด๊ธฐํ(Eager Initialization): ํด๋์ค ๋ก๋ ์์ ์์ ์ธ์คํด์ค๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ์ฌ ๋์ ์ ๊ทผ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- Enum ์ฑ๊ธํค: Enum์ ์ฌ์ฉํ๋ฉด ์๋ฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ ๋ ์์ ์ฑ๊ณผ ์ง๋ ฌํ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ฏ๋ก ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์์ ํ ๋ฐฉ์ ์ค ํ๋์ ๋๋ค.
- Synchronized ํค์๋ ์ฌ์ฉ: