Singleton Pattern
Last updated
Last updated
JavaScript ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค.
์ธ์คํด์ค(Instance): ์ด๋ค ์์ฑ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์๋ก์ด ๊ฐ์ฒด ()
์์ฑ์๊ฐ ์ฟ ํค๋ฅผ ์ฐ์ด๋ผ ์ ์๋ ์ฟ ํค ํ์ด๋ผ๋ฉด, ์ธ์คํด์ค๋ ์ฟ ํค ํ์์ ์ฐ์ด๋ธ ์ฟ ํค์ด๋ค.
์ธ์คํด์คํ(Instantiation): ์์ฑ์๋ก๋ถํฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ฒ
๊ฐ์ฒด ๋ฆฌํฐ๋ด(Object literal): ์ค๊ดํธ({}
)๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ์ ()
ํด๋์ค์ ์ธ์คํด์คํ๋ฅผ ๋จ์ผ ์ธ์คํด์ค๋ก ์ ํํ๋ ํจํด์ด๋ค.
์ฑ๊ธํค ํจํด์ ์๋์ ๊ฐ์ ํน์ฑ์ ๊ฐ๋๋ค.
๋จ์ผ ์ธ์คํด์ค๊ฐ ๋ณด์ฅ๋๋ค.
ํด๋น ์ธ์คํด์ค์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค.
๋จ์ผ ์ธ์คํด์ค๊ฐ ๋ณด์ฅ๋๊ธฐ ๋๋ฌธ์ success
, error
๋ฉ์๋๊ฐ ์ด๋์์ ํธ์ถ๋๋๋ผ๋ logCounter
๊ฐ์ด ๊ณต์ ๋๋ค.
๋จ์ผ ์ธ์คํด์ค๋ฅผ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋งค๋ฒ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์ ์ฝ๋๋ค.
๋จ์ ํ ์คํธ๊ฐ ์ด๋ ต๋ค.
ํ ์คํธ๋ง๋ค ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋์ ์ธ์คํด์ค๋ก ๋ชจ๋ ํ ์คํธ๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค. ์ฆ, ๋ชจ๋ ํ ์คํธ๋ค์ ์ด์ ํ ์คํธ์์ ์์ฑ ๋๋ ์์ ํ ์ธ์คํด์ค๋ฅผ ์์ ํด์ผ ํ๊ณ , ์ด๋ ๊ฒ ํ๊ฒฝ์ ๊ฐํ๊ฒ ๊ฒฐํฉ๋ ํ ์คํธ๋ ์คํ ์์ ๋ฑ์ ๋ฐ๋ผ ์๊ธฐ์น ๋ชปํ ๋์์ ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐฐ๋๋ค.
๋จ์ผ ์ธ์คํด์ค๋ฅผ ๋ณด์ฅํ๋ฉฐ, ์ธ์คํด์ค์ ๋ํด ์ ์ญ ์ ๊ทผ์ ์ ๊ณตํ๋ ๋ ๊ธฐ๋ฅ์ ๋์์ ํ๊ธฐ ๋๋ฌธ์, ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐฐ๋๋ค.
์ ์ญ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
์ด๋ ์ฑ๊ธํค ํจํด์ ํน์ง์ด์ ๋จ์ ์ธ๋ฐ, var
๋ฅผ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ์ด์ ์์ ์ ์ ์๋ฏ ์๋ฌด ๊ณณ์์๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ ์ญ ์ํ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ ๋ณต์กํ๊ฒ ๋ง๋ ๋ค.