Singleton ๊ด๋ จ ์ง๋ฌธ์
๋๋ค.
์๋
ํ์ธ์. ์ข์ ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!๋จผ์ Engine ์์ฑ์ ๊ด๋ จํด์ ๋ต๋ณ๋๋ฆฌ๋ฉด, ๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ โ์์ ํ ํต์ ๋ APIโ ๊ด์ ์์๋ ์์ฑ์๋ฅผ private์ผ๋ก ๋๊ณ Get()๋ง ํตํด ์ ๊ทผํ๊ฒ ๋ง๋๋ ๋ฐฉ์์ด ๋ ์์ ํ ์ ์์ต๋๋ค.๋ค๋ง ๊ฐ์ ํ๋ก์ ํธ์์๋ Engine์ โ๋ด๋ถ์์ ์ค์ค๋ก ์์ฑ๋๋ ์ ํต์ ์ธ ์ฑ๊ธํคโ๋ณด๋ค๋, ์ธ๋ถ์์ ํ๋ ์์ฑํ๊ณ ์ ์ญ์ผ๋ก ์ ๊ทผํ ์ ์๊ฒ ๋ง๋ ๊ตฌ์กฐ์ ๊ฐ๊น๊ฒ ๊ตฌํํ์ต๋๋ค. ์ค์ ๋ก ์์ ์ ๋ฐ๋ผ Engine engine;์ฒ๋ผ ์ง์ ์์ฑํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์๊ณ , Game : public Engine์ฒ๋ผ ์์ํด์ ํ์ฅํ๋ ํํ๋ ํจ๊ป ์ฌ์ฉํ๊ณ ์์ต๋๋ค.์ด๋ฐ ๊ตฌ์กฐ๋ฅผ ๋จ์ํ๊ฒ ๋ณด์ฌ๋๋ฆฌ๋ ค๋ค ๋ณด๋ ์์ฑ์๋ฅผ public์ผ๋ก ๋์์ต๋๋ค. ๋์ ์์ฑ์ ๋ด๋ถ์์ assert(!instance)๋ก ํ๋๋ง ์์ฑ๋๋๋ก ๋ฐฉ์ดํ๊ณ , Get()์ผ๋ก ์ ์ญ ์ ๊ทผ์ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ์ต๋๋ค.๋ ๋ฒ์งธ๋ก ํ
์คํธ์ ๋ํด์ ๋ง์๋๋ฆฌ๋ฉด, ํ์ฌ ๊ฐ์ ํ๋ก์ ํธ์์๋ ํ
์คํธ ์นํ์ ์ธ ๊ตฌ์กฐ๊น์ง๋ ์๋์ ์ผ๋ก ๊ฐ์ ธ๊ฐ์ง๋ ์์์ต๋๋ค. ๋ง์ํ์ ๊ฒ์ฒ๋ผ ์ ์ญ ๊ฐ์ฒด๋ ์ฑ๊ธํค์ ํ
์คํธ๊ฐ ๊น๋ค๋ก์ด ํธ์ด๊ณ , ์ค๋ฌด์์๋ ๋ณดํต ์ด๋ฐ ์ ์ญ ์์กด์ฑ์ ์ธํฐํ์ด์ค๋ ์ผ๋ฐ ๊ฐ์ฒด ๋จ์๋ก ๋ถ๋ฆฌํด์ ํ
์คํธ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก ๊ฐ์ ธ๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ค๋ง ๊ฐ์์์๋ ํ
์คํธ, ์์ธ ์ฒ๋ฆฌ, ์์กด์ฑ ๋ถ๋ฆฌ๊น์ง ๋ชจ๋ ๋ฐ์ํ๋ฉด ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋น ๋ฅด๊ฒ ๋ณต์กํด์ง ์ ์์ด์, โ๊ฒ์ ์์ง ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒโ์ ์ง์คํ๋ ๋ฐฉํฅ์ผ๋ก ๋จ์ํํ์ต๋๋ค. ์ง๋ฌธ ์ฃผ์ ๋ด์ฉ์ ๋ํด ๋ต๋ณ์ ๋๋ ธ๋๋ฐ์.๋ต๋ณ์ด ๋ถ์กฑํ๊ฑฐ๋ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ฉด ํธํ๊ฒ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค!