Singleton(μ±κΈν€ ν¨ν΄)
I.μ±κΈν€
μννΈμ¨μ΄ λμμΈ ν¨ν΄μμ μ±κΈν΄ ν¨ν΄(Singleton pattern)μ λ°λ₯΄λ ν΄λμ€λ, μμ±μκ° μ¬λ¬ μ°¨λ‘ νΈμΆλλλΌλ μ€μ λ‘ μμ±λλ κ°μ²΄λ νλμ΄κ³ μ΅μ΄ μμ± μ΄νμ νΈμΆλ μμ±μλ μ΅μ΄μ μμ±μκ° μμ±ν κ°μ²΄λ₯Ό 리ν΄νλ€. μ΄μ κ°μ λμμΈ μ νμ μ±κΈν΄ ν¨ν΄μ΄λΌκ³ νλ€. μ£Όλ‘ κ³΅ν΅λ κ°μ²΄λ₯Ό μ¬λ¬κ° μμ±ν΄μ μ¬μ©νλ DBCP(DataBase Connection Pool)μ κ°μ μν©μμ λ§μ΄ μ¬μ©λλ€.
μ½κ²λ§ν΄ μΈμ€ν΄μ€λ₯Ό λ¨μ©μν€μ§μλλ€. μ±κΈν΄ ν¨ν΄μ νλμ κ°μ²΄λ§μ μμ±ν νΈμΆλ κ³³μμλ μμ±λ κ°μ²΄λ₯Ό λ°ννμ¬ νλ‘κ·Έλ¨ μ λ°μ μΌλ‘ λ¨ νλμ μΈμ€ν΄μ€λ§μ μ¬μ©νκ² νλ ν¨ν΄μ΄λ€.
2. μ±κΈν€μ νμ©ν μμ
κΉνλΈ λ§ν¬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package main;
import cls.HeClass;
import cls.MyClass;
import cls.YouClass;
public class MainClass {
public static void main(String[] args) {
/*
Singleton : instanceλ₯Ό 1κ°λ§ μμ±ν΄μ λ°μ΄ν°λ₯Ό μ κ·ΌνκΈ° μν ν¨ν΄
*/
MyClass mycls = new MyClass();
YouClass youcls = new YouClass();
// μ«μ μΆλ ₯ λ©μλ
youcls.print();
//λ¬Έμμ΄ μ μ©
HeClass hecls = new HeClass("νκΈΈλ");
//λ¬Έμμ΄ μΆλ ₯ λ©μλ
mycls.method();
}
}
|
cs |
2. <SIngletonClass>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package singleton;
public class SingletonClass {
//μ±κΈν€ μμ±
private static SingletonClass sc = null;
/////////////////////
public int sNumber;
public String name;
//////////////////////
private SingletonClass() {
}
public static SingletonClass getInstance() {
if(sc == null) { // νλ²λ§ μ€νλ¨
sc = new SingletonClass();
}
return sc;
}
}
|
cs |
3.<HeClass>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package cls;
import singleton.SingletonClass;
public class HeClass {
//λ¬Έμμ΄μ MyClassλ‘
private String name;
public HeClass(String name) {
this.name = name;
SingletonClass sc = SingletonClass.getInstance();
sc.name = this.name;
}
}
|
cs |
4.<YouClass>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package cls;
import singleton.SingletonClass;
public class YouClass {
private int num;
//λ¬Έμ λ°κΏ μΆλ ₯ λ©μλ
public void print() {
SingletonClass sc = SingletonClass.getInstance();
num = sc.sNumber;
System.out.println(num);
}
}
|
cs |
5.<MyClass>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
package cls;
import singleton.SingletonClass;
public class MyClass {
private int number;
private String name;
//////////////////////////// λ©€λ² λ³μ
//μ«μ
public MyClass() {
number = 123;
SingletonClass s = SingletonClass.getInstance();
s.sNumber = number;
}
//λ¬Έμμ΄
public void method() {
SingletonClass sc = SingletonClass.getInstance();
this.name = sc.name;
System.out.println(name);
}
}
|
cs |