3.1 ์ฑ๊ธํด
Singleton์ ๋จ์ผ ์ค๋ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ผ๋ถ ํด๋์ค์ ๋จ์ผ ์ธ์คํด์ค๋ฅผ ๊ฐ๋๋ก ๋ณด์ฅํ๊ณ ์ด ์ธ์คํด์ค์ ๋ํ ์ ์ญ ์ก์ธ์ค ์ง์ ์ ์ ๊ณตํ๋ ์ผ๋ฐ์ ์ธ ๋์์ธ ํจํด์ ๋๋ค.

์ข ์ข ์ด๋ณด ํ๋ก๊ทธ๋๋จธ๋ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ฅผ ์ผ๋ถ ์ ์ ํด๋์ค(์ ์ ๋ฉ์๋๋ง ํฌํจํ๋ ํด๋์ค)๋ก ์ด์ ๋ธํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์๋ ์ฌ๋ฌ ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฌํ ํด๋์ค์ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๋ฌํ ์ ์์ผ๋ฉฐ ์ด๋ฌํ ๋ฉ์๋๋ ํ ์คํธํ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋์์ผ๋ก ์ฑ๊ธํค ํด๋์ค ์๋ฃจ์ ์ด ์ ์๋์์ต๋๋ค. ํ๋์ ๊ฐ์ฒด๋ง ๊ฐ์ง ์ ์๋ ํด๋์ค์ ๋๋ค. ์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ์์ง ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ง ๋ง๋ค์ด์ง๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ฏธ ์กด์ฌํ๋ ์ธ์คํด์ค์ ๋ํ ์ฐธ์กฐ๊ฐ ๋ฐํ๋ฉ๋๋ค.
๋ง์ ๊ฒฝ์ฐ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด ํด๋์ค๋ ์ผ๋ถ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ ์์ผ๋ฉฐ ํด๋น ๊ฐ์ฒด๋ ์ธํฐํ์ด์ค ๊ตฌํ์ผ๋ก ๋ค๋ฅธ ๋ฉ์๋์ ์ ๋ฌ๋ ์ ์์ต๋๋ค. ์ผ๋ จ์ ์ ์ ๋ฉ์๋๋ก ์ํํ ์ ์๋ ๊ฒ.
์ฅ์ :
- ๋ฉ์๋๋ ์ ์ ํด๋์ค๊ฐ ์๋ ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
- ๊ฐ์ฒด ๋ฉ์๋๋ ํ ์คํธํ๊ณ ๋ชจ์ํ๊ธฐ๊ฐ ํจ์ฌ ์ฝ์ต๋๋ค.
- ๊ฐ์ฒด๋ ํ์ํ ๋๋ง ์์ฑ๋ฉ๋๋ค: ๊ฒ์ผ๋ฅธ ๊ฐ์ฒด ์ด๊ธฐํ.
- ์ถ์์ ํ์ํ์ง ์์ ์ฑ๊ธ์ด ๋ง์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ์ด๊ธฐ ์ถ์๋ฅผ ๊ฐ์ํํฉ๋๋ค.
- ๋จ๋ ์ผ๋ก ํ ํ๋ฆฟ ์ ๋ต ๋๋ ์ฌ๋ฌ ๊ฐ์ฒด๋ก ์ถ๊ฐ ์ ํ๋ ์ ์์ต๋๋ค.
๋จ์ :
- ์ค๋ ๋ ๊ฐ ๊ฒฝ์ ๋ฐ ์ง์ฐ์ ์ ์ดํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค.
- "๋จธ๋ฆฌ์์" ๋ฉํฐ ์ค๋ ๋ "์ธํจ์ด"๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ์ค๋ ์ฑ๊ธ ํค์ ๋ํ ์ก์ธ์ค๊ฐ ๋ฎคํ ์ค๋ฅผ ์ด์ง ์์์ผํฉ๋๋ค. ๋ ๋์ ๊ฒ์ฆ๋ ์๋ฃจ์ .
- ์๋ฃ๋์ง ์์ ๋จ์ผ ์ค๋ ๋์ ๋ํ ๋ ์ค๋ ๋ ๊ฐ์ ์ถฉ๋๋ก ์ธํด ์ง์ฐ์ด ๋ฐ์ํฉ๋๋ค.
- ๊ฐ์ฒด๊ฐ ์ค๋ซ๋์ ์์ฑ๋๋ ๊ฒฝ์ฐ ์ง์ฐ์ด ์ฌ์ฉ์๋ฅผ ๋ฐฉํดํ๊ฑฐ๋ ์ค์๊ฐ์ ๋ฐฉํดํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ ์ด๊ธฐํ ๋จ๊ณ๋ก ์์ฑ์ ์ ์กํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋จ์ ํ ์คํธ์๋ ํน์ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ "non-lonely" ๋ชจ๋๋ก ์ค์ ํ๊ณ ํ ์คํธ๋ฅผ ์๋ก ์์ ํ ๊ฒฉ๋ฆฌํฉ๋๋ค.
- ์คํ ๊ฐ๋ฅ์ฑ์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ "๊ฐ์ฅ ๊ฐ๋จํ ์คํ ๊ฐ๋ฅ์ฑ"์ด๋ผ๋ ๊ฐ๋ ์กฐ์ฐจ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ํ ์คํธํ๊ธฐ ์ํ ํน๋ณํ ์ ์ ์ด ํ์ํฉ๋๋ค.
3.2 ๊ณต์ฅ[๋ฐฉ๋ฒ]
ํฉํ ๋ฆฌ ๋ฉ์๋๋ ํน์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ํ์ ํด๋์ค(ํด๋์ค-์์์)์ ์ ๊ณตํ๋ ์ผ๋ฐ์ ์ธ ๋์์ธ ํจํด์ ๋๋ค. ์์ฑ ์ ์์์ ์์ฑํ ํด๋์ค๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ฆ, ์ด ํ ํ๋ฆฟ์ ๊ฐ์ฒด ์์ฑ์ ๋ถ๋ชจ ํด๋์ค์ ์์์๊ฒ ์์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ ์ฝ๋์์ ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์ ์์ค์์ ์ถ์ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค.

์ด ํจํด์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์ง๋ง ๊ฐ์ฒด๋ฅผ โโ๊ธฐ๋ฐ์ผ๋ก ํ ํด๋์ค๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ํ์ ํด๋์ค์ ๋งก๊น๋๋ค. ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋์ค๊ฐ ํ์ ํด๋์ค ์์ฑ์ ์์ํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ:
- ํด๋์ค๋ ์์ฑํด์ผ ํ๋ ํ์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ์์ง ๋ชปํฉ๋๋ค.
- ํด๋์ค๋ ์์ฑํ๋ ๊ฐ์ฒด๊ฐ ํ์ ํด๋์ค์ ์ํด ์ง์ ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค.
- ํด๋์ค๋ ์ฌ๋ฌ ๋์ฐ๋ฏธ ํ์ ํด๋์ค ์ค ํ๋์ ์ฑ ์์ ์์ํ๊ณ ์ด๋ฌํ ์ฑ ์์ ๋งก์ ํด๋์ค๋ฅผ ๊ฒฐ์ ํ ๊ณํ์ ๋๋ค.
3.3 ์ถ์ ๊ณต์ฅ
์ถ์ ํฉํ ๋ฆฌ๋ ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ์ง์ ํ์ง ์๊ณ ๊ด๋ จ๋๊ฑฐ๋ ์ํธ ์์กด์ ์ธ ๊ฐ์ฒด๊ตฐ์ ๋ง๋ค๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ์ผ๋ฐ์ ์ธ ๋์์ธ ํจํด์ ๋๋ค.
ํจํด์ ์์คํ ๊ตฌ์ฑ์์๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ธ ์ถ์ ํด๋์ค Factory๋ฅผ ์์ฑํ์ฌ ๊ตฌํ๋ฉ๋๋ค(์: ์ฐฝ ์ธํฐํ์ด์ค์ ๊ฒฝ์ฐ ์ฐฝ๊ณผ ๋ฒํผ์ ์์ฑํ ์ ์์). ๊ทธ๋ฐ ๋ค์ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค๊ฐ ์์ฑ๋ฉ๋๋ค.

ํ๋ก๊ทธ๋จ์ด ์์ฑ๋ ์ ๊ฐ์ฒด์ ํ๋ก์ธ์ค ๋ฐ ์ ํ๊ณผ ๋ ๋ฆฝ์ ์ด์ด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋์ผํ ์ปจํ ์คํธ์์ ์๋ก ๋ค๋ฅธ ์ธํธ์ ๊ฐ์ฒด๋ฅผ ๋์์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ์ ์ธํ๊ณ ๊ด๋ จ ๊ฐ์ฒด์ ํจ๋ฐ๋ฆฌ ๋๋ ๊ทธ๋ฃน์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ.
๊ฐ์ :
- ํน์ ํด๋์ค๋ฅผ ๊ฒฉ๋ฆฌํฉ๋๋ค.
- ์ ํ๊ตฐ ๊ต์ฒด๋ฅผ ๋จ์ํํฉ๋๋ค.
- ์ ํ ํธํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ด ํ์ผ ์์คํ ๊ณผ ํจ๊ป ์๋ํ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ๊ทธ๋ฐ ๋ค์ Linux์์ ์์ ํ๋ ค๋ฉด LinuxFile, LinuxDirectory, LinuxFileSystem ๊ฐ์ฒด๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Windwos์์ ์์ ํ๋ ค๋ฉด WindowsFile, WindowsDirectory, WindowsFileSystem ํด๋์ค๊ฐ ํ์ํฉ๋๋ค.
Path.of()๋ฅผ ํตํด ์์ฑ๋๋ Path ํด๋์ค๊ฐ ๋ฐ๋ก ๊ทธ๋ฌํ ๊ฒฝ์ฐ์ ๋๋ค. Path๋ ์ค์ ๋ก ํด๋์ค๊ฐ ์๋๋ผ ์ธํฐํ์ด์ค์ด๋ฉฐ WindowsPath ๋ฐ LinuxPath ๊ตฌํ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ข ๋ฅ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ์ง๋ ์ฝ๋์์ ์จ๊ฒจ์ง๋ฉฐ ๋ฐํ์์ ๊ฒฐ์ ๋ฉ๋๋ค.
3.4 ํ๋กํ ํ์
ํ๋กํ ํ์ ์ ์ ๋๋ ์ดํฐ๋ธ ๋์์ธ ํจํด์ ๋๋ค.
์ด ํจํด์ ํ๋กํ ํ์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋๋ ๊ฐ์ฒด์ ์ข ๋ฅ๋ฅผ ์ ์ํ๊ณ ์ด ํ๋กํ ํ์ ์ ๋ณต์ฌํ์ฌ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ๊ตฌํ์์ ๋ฒ์ด๋ "์ธํฐํ์ด์ค๋ฅผ ํตํ ํ๋ก๊ทธ๋๋ฐ" ์์น์ ๋ฐ๋ฅผ ์ ์์ต๋๋ค.
๊ณ์ธต ๊ตฌ์กฐ์ ๋งจ ์์ ์๋ ์ธํฐํ์ด์ค/์ถ์ ํด๋์ค๋ ๋ฐํ ์ ํ์ผ๋ก ์ง์ ๋๋ฉฐ ์์ ํด๋์ค๋ ์ด ์ ํ์ ๊ตฌํํ๋ ์์์๋ฅผ ๋์ฒดํ ์ ์์ต๋๋ค. ๊ฐ๋จํ ๋งํด์ ์์ฑ์๋ฅผ ํตํด ์์ฑํ์ง ์๊ณ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด์ ๋๋ค.

ํจํด์ ๋ค์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ํ์ค ๋ฐฉ์(์ด ๊ฒฝ์ฐ ์ ์ฒด ๊ฐ์ฒด์ ์กฐ์ ๊ณ์ธต ๊ตฌ์กฐ์ ์์ฑ์๋ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธ)์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ถ๊ฐ ๋ ธ๋ ฅ์ ํผํฉ๋๋ค.
- ์ถ์ ํฉํฐ๋ฆฌ ํจํด์ฒ๋ผ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๊ฐ์ฒด ์์ฑ์๋ฅผ ์์ํ์ง ๋ง์ญ์์ค.
ํ๋ก๊ทธ๋จ์ด ์ ํ์ ์์ฑ, ๊ตฌ์ฑ ๋ฐ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๊ด์ฌ์ด ์์ ๋ ์ด ๋์์ธ ํจํด์ ์ฌ์ฉํฉ๋๋ค.
- ์ธ์คํด์คํ๋ ํด๋์ค๋ ์๋ฅผ ๋ค์ด ๋์ ๋ก๋ฉ์ ์ฌ์ฉํ์ฌ ๋ฐํ์์ ๊ฒฐ์ ๋ฉ๋๋ค.
- ์ ํ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ์ ํํํ ํด๋์ค ๋๋ ํฉํ ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ์ง ์์ผ๋ ค๊ณ ํฉ๋๋ค.
- ํด๋์ค ์ธ์คํด์ค๋ ์ฌ๋ฌ ์ํ ์ค ํ๋์ผ ์ ์์ต๋๋ค. ๋งค๋ฒ ์ ์ ํ ์ํ๋ก ํด๋์ค๋ฅผ ์๋์ผ๋ก ์ธ์คํด์คํํ๋ ๊ฒ๋ณด๋ค ์ ์ ํ ์์ ํ๋กํ ํ์ ์ ์ค์ ํ๊ณ ๋ณต์ ํ๋ ๊ฒ์ด ๋ ํธ๋ฆฌํ ์ ์์ต๋๋ค.
GO TO FULL VERSION