싱글톤(Singleton) 설명
① 자바스크립트 싱글톤 패턴은 클래스 함수의 인스턴스를 한 개만 유지한다.
② 즉, 여러 객체를 생성 하더라도 최초 생성된 객체를 사용하는 것이다.
③ 객체에 대한 접근자(비공개 멤버 : 클로저)를 사용하여 해당 객체를 공유하는 것이다.
1
2
3
4
5
6 |
var singletonObj = {
a : '값',
b : function () {
}
}
|
cs |
싱글톤(Singleton) 예제
① 아래 예제 코드에서 비공개 함수 init()의 return 값으로 반환 하는 객체가 바로 싱글톤 객체이다.
② 내부 변수에 접근하여 객체를 반환하는 클로저(Closure) 패턴을 사용했다.
③ 즉, 객체를 여러 번 생성(getInstance)를 하더라도 한 개의 객체를 참조하게 되는 것이다.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 |
var Singleton = (function () {
/**
* --------------------------------
* 싱글톤 패턴 구현 코드
* --------------------------------
*/
// 비공개 변수, 메서드 정의
var instantiaed;
function init() {
// 싱글톤 객체 정의
return {
// 공개 메서드 정의
publicMethod : function () {
return 'hello Singleton Pattern!!!';
},
// 공개 속성 정의
publicProp : 'single value'
}
}
// Public 메서드인 getInstance() 를 정의한 객체.
// 비공개 변수를 사용하여 메서드에 접근 가능(클로저)
return {
getInstance : function () {
if (!instantiaed) {
instantiaed = init();
}
return instantiaed;
}
}
})();
// 싱글톤 객체 생성 테스트
var first = Singleton.getInstance();
first.publicMethod(); //객체 생성
console.log(first.publicMethod());
var second = Singleton.getInstance();
second.publicMethod(); //객체 생성
console.log(second.publicMethod());
console.log(first === second); // 같은 객체(True)
|
cs |
위의 패턴으로 코딩 하면 싱글톤으로 생성된 객체(Instance)를 외부에서 접근 불가능하게 할 수 있다.
'웹 프론트 > Javascript & ECMA' 카테고리의 다른 글
Javascript(자바스크립트) - 배열 처리 정리(3) - every, some (0) | 2017.11.20 |
---|---|
Javascript(자바스크립트) - 배열 처리 정리(2) - filter(필터) (0) | 2017.11.19 |
Javascript(자바스크립트) - 배열 처리 정리(1) - map, forEach (0) | 2017.11.17 |
Javascript(자바스크립트) - 반복문 for loop 성능 향상 팁 (0) | 2017.09.09 |
Javascript(자바스크립트) - Null, Undefined, 데이터형 비교 차이 (0) | 2017.09.07 |