์์ฑ์ : ์๊ทธ๋ฆผ
์ฑ๊ธํค ๋์์ธ ํจํด์ ๋ํ ์์ธํ ์ค๋ช ์ ์ฑ๊ธํค (Singleton) ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์. ์ฌ๊ธฐ์๋ ์ฑ๊ธํค ๋์์ธ ํจํด์ Java ๊ตฌํ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค.
Java์ ์ฑ๊ธํค ๊ตฌํ์ ์์ฑ์์ ๋ํ ์ดํด๋ก๋ถํฐ ์์ํ๋ค. ์์ฑ์๋ฅผ public์ผ๋ก ๋๋ค๋ฉด ๋๊ตฌ๋ ์ ๊ทผํ์ฌ ๊ฐ์ฒด ์์ฑ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ค์ง ํ๋์ ๊ฐ์ฒด ์์ฑ์ ๋ํ ์ ์ฝ์ ๊ฑธ ์ ์๋ค. ๋ฐ๋ผ์ ์์ฑ์๋ฅผ private์ผ๋ก ๋๊ณ , ์์ฑ๋ ๊ฐ์ฒด๋ static ๋ณ์๋ก ๊ด๋ฆฌ, ๊ฐ์ฒด ์ ๊ทผ์ ๋ํ ๋ถ๋ถ์ ๋ณ๋์ publicํ method๋ฅผ ๋ฌ์ ์ฑ๊ธํค ๋์์ธ ํจํด์ ๊ตฌํํ๋ค.
class ClassName {
private ClassName() {}
}
์์ฑ์๋ฅผ private์ผ๋ก ๋์ ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์์ 3๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค.
์ฝ๋๊ฐ ์ง๊ด์ ์ด๋ if ์กฐ๊ฑด ์ฒดํฌ๊ฐ ๋ฒ๊ฑฐ๋กญ๋ค๋ ๋จ์ ์ด ์๋ค.
class ClassName {
private ClassName() {}
static ClassName className;
public static ClassName getInstance() {
if (className == null) className = new ClassName();
return className; // ๊ฐ์ฒด ์ ๊ทผ
}
}
๊ฐ์ฅ ๊ฐ๊ฒฐํ ๋ฐฉ๋ฒ์ด๋ค.
class ClassName {
private ClassName() {}
private static ClassName className;
static { className = new ClassName(); }
}
์ด ๋ฐฉ๋ฒ์ ๋๋๋ก ์ง์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
class ClassName {
private ClassName() {}
private static ClassName className = new ClassName();
}
์๊ธฐ ์์ ์ returnํ๋ public static method๋ฅผ ๊ตฌํํ๋ค. static ๋ณ์์๋ static ๋ผ๋ฆฌ๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ static์ผ๋ก ์ ์ธํด์ผ ํ๋ค.
class ClassName {
private ClassName() {}
private static ClassName className;
static { className = new ClassName(); }
public static ClassName getInstance() {
return className;
}
}
Singleton Java ์ ์ฒด ๊ตฌํ