-
์ฑ๊ธํค(Singleton)๐ป IT Study/Knowledge 2020. 7. 23. 18:17
P U R P O S E
์ ์ฒดํ๋ก๊ทธ๋จ์์ ๋จ ํ๋์ ๊ฐ์ฒด๋ง ๋ง๋ค๋๋ก ๋ณด์ฅ.
ํด๋์ค ์ธ๋ถ์์ new ์ฐ์ฐ์๋ก ์์ฑ์๋ฅผ ํธ์ถํ ์ ์๋๋ก ๋ง์์ผ ํ๋ค.
why? ์์ฑ์๊ฐ ํธ์ถํ๋งํผ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ํ๋์ ๊ฐ์ฒด๊ฐ ์๋๋ค.
H O W ?
1. ์์ฑ์ ์์ private ์ ๊ทผ์ง์ ์(Modifier)๋ฅผ ์ด์ฉํ๋ค.
-> private์ ํตํด ์ธ๋ถ์์ ํธ์ถ์ ๋ง์ ์ ์๊ฒ ๋๋ค.
2. ์ ์ ํ๋(static)๋ฅผ ์ ์ธํ๊ณ ์์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
ํด๋์ค ๋ด๋ถ์์ new ์ฐ์ฐ์๋ก ํธ์ถ ๊ฐ๋ฅ
๋จ, ์ ์ ํ๋์์ ์ ๊ทผ์ ํ์๋ฅผ private์ผ๋ก ํ ๊ฒ.
3. ์ธ๋ถ์์ ํธ์ถํ ๋๋ ํจ์๋ฅผ ์ด์ฉํ๋ค. (์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์ป๋ ์ ์ผํ ๋ฐฉ๋ฒ)
getInstance๋ฅผ ์ ์ธํ๊ณ ์ ์ ํ๋์์ ์ฐธ์กฐํ๊ณ ์๋ ์์ ์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด.
์ธ๋ถ์์ ์ฌ๋ฌ๊ฐ์ ํด๋์ค ๋ณ์๋ฅผ ๋ง๋ค์ด๋ ์ฃผ์๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค.
์๋ ์ฝ๋์์ ํ์ธํ๊ธธ ๋ฐ๋๋ค.
* java
class Example { } class Singleton { // new๋ฅผ ํ๋ฒ๋ง ํธ์ถํ๊ณ ์ถ๋ค. // private static Singleton single = new Singleton(); static Singleton single; private Singleton () { System.out.println("== default constructor =="); } public static Singleton getInstance() { if(single == null) { single = new Singleton(); } return single; } } public class SingletonTest { public static void main(String[] args) { // ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ง๋ค ์ฃผ์๊ฐ ๋ค๋ฅด๋ค. Example ex1 = new Example(); Example ex2 = new Example(); System.out.println(ex1==ex2); System.out.println(System.identityHashCode(ex1)); System.out.println(System.identityHashCode(ex2)); // ๊ฐ์ฒด์ ์ฃผ์๊ฐ ๊ฐ์์ง๋ค. Singleton single1 = Singleton.getInstance(); Singleton single2 = Singleton.getInstance(); System.out.println(single1==single2); System.out.println(System.identityHashCode(single1)); System.out.println(System.identityHashCode(single2)); } }
** ๊ฐ๋จ ์ ๋ฆฌ
์ฑํดํค(singleton) : ํ๋์ application ์์์ ๋ฑ ํ๋ฒ๋ง ์ฌ์ฉํ๋ ๊ฒ.
> ์์ฑ์๋ฅผ private์ผ๋ก ํจ์ผ๋ก์จ, ๊ฐ์ฒด์ ์ ๊ทผํ๋ ๊ฒ์ ๋ง๊ณ ์ธ๋ถ์์ ์์ฑํ ์ ์๋ ํจ์๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค.
์ถ์ : ์ด๊ฒ์ด์๋ฐ๋ค. 243p, ์ ์ง๊ฐ์ฌ๋ ์์
'๐ป IT Study > Knowledge' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฉ์ด์ ๋ฆฌ] JVM , JRE, JDK ๊ฐ๋จํ ์์๋ณด๊ธฐ (0) 2021.11.07 ํ๋ก์(Proxy) (0) 2021.09.26 DNS(Domain Name System) (0) 2020.02.13 ๋ชจ๋์ฐ๊ณ ; EAI, ESB (0) 2020.02.06 ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ vs ๋น๊ธฐ๋ฅ ์๊ตฌ์ฌํญ (0) 2020.01.28