๋ฐฑ์๋(Back-End) ๊ฐ๋ฐ/Java
[JAVA] ๋์์ธ ํจํด - ์ฑ๊ธํด ํจํด(Singleton)
rabo93
2025. 5. 28. 11:25
์๋ฐ ๋ํ ์ฝ๋ฉ ํจํด : ์ค๊ณ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์ผ๋ก, ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ๋์
⇒ ์ฑ๊ธํค ํจํด๋ง ์จ๋ดค์.. ๋ค๋ฅธ ํจํด ๊ณต๋ถ ํ ๊ฒ! Spring Bean ์์ฒด๊ฐ ๊ธฐ๋ณธ ์ฑ๊ธํค!
์ฑ๊ธํค ํจํด(Singleton Pattern)
- ๊ฐ์ฒด๊ฐ ๋จ ํ๋๋ง ์กด์ฌํ๋๋ก! (์ดํ๋ฆฌ์ผ์ด์ ์ด ์์๋ ๋ ์ด๋ค ํด๋์ค๊ฐ ์ต์ด ํ๋ฒ๋ง ๋ฉ๋ชจ๋ฆฌ ํ ๋น(static)ํ๊ณ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋์์ธ ํจํด)
- ๋ ์ง์คํธ๋ฆฌ ๊ฐ์ ์ค์ ํ์ผ์์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ๊ฐ ์์ฑ๋๋ค๋ฉด ์ค์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ํ์ด ์๊ธธ ์ ์๋ค. ๋ฐ๋ผ์, ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋์์ ํด๋น ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ๋ฉฐ ์ฌ์ฉํ ์ ์๊ฒ๋ ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํจ!
(but, ๋์์ฑ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด์ ์ค๊ณ, ๋ค๋ฅธ ์ธ์คํด์ค๋ค ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋์์ ธ ‘๊ฐ๋ฐฉ-ํ์ ์์น’ ์๋ฐฐ)
⇒ ์ฅ์ : ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ, ์ ์ญ ์ํ ๊ณต์ ๊ฐ๋ฅ
⇒ ์ฌ์ฉ ์์ : DB ์ฐ๊ฒฐ ๊ฐ์ฒด, ์ค์ ์ ๋ณด ๊ด๋ฆฌ ํด๋์ค, ๋ก๊ฑฐ ๋ฑ
// ์ฑ๊ธํค ํจํด ์์
public class CarClass {
// ์์ ์ ๋ฉค๋ฒ๋ก ์ ์ธํด์ ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ ค ๋๋๋ค(static)
private static CarClass car = new CarClass();
// ์ธ๋ถ์์ ๋ฉค๋ฒ๋ก ์ ์ธ๋ car๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด
// getInstance ๋ฉ์๋ ์ธ์๋ CarClass ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
// => ํด๋น car ๊ฐ์ฒด๋ฅผ ๋๊ตฐ๊ฐ ์ด์ฉํ๋ค๋ฉด ์ด์ฉ์ ๋ชปํ๋ค.(์ฑ๊ธํค ํจํด)
public static CarClass getInstance() {
return car;
}
}