반응형
오늘은 JS에서 싱글톤 패턴을 사용하는 방법에 대해서 공부했다.
싱글톤 패턴(Singletone Pattern)이란 객체 생성 패턴 중 하나로 전체 프로그램 내에서 하나의 인스턴스만 존재할 수 있도록 하는 것이다.
// singletonEx 라는 객체안에 키, 벨류 값을 넣어준다.
let singletonEx = {
count: 0,
increase: function() {
this.count++ // 메소드 호출을 할 경우, this는 singletonEx를 가리킨다.
},
decrease: function() {
this.count--
},
getValue: function() {
return this.count
}
}
singletonEx.increase()
singletonEx.increase()
singletonEx.decrease()
singletonEx.getValue() // 1
이렇게 하면 외부에서는 count에 접근이 불가능하지만 singletonEx 객체의 내장 함수로 간접 접근이 가능하다.
그러나 count 변수가 비공개 변수가 아니므로 private 하게 바꿔보면
let singletonEx = (function(){
let instance; // 비공개 변수
function init(){
// singleton instanse
return {
// 공개 프로퍼티
count : 0,
// 공개 메서드
increase: function() {
this.count++
},
decrease: function() {
this.count--
},
getValue: function() {
return this.count
}
};
}
return {
getInstance: function() {
// instance 가 없는 경우 새로 선언
if (!instance) {
instance = init()
}
// instance 가 이미 있는 경우 해당 instance 반환
return instance
}
}
})()
let singletonEx1 = singletonEx.getInstance()
singletonEx1.increase() // 증가 1
singletonEx1.increase() // 증가 1
console.log(singletonEx1.getValue()) // 2
console.log(singletonEx1.count) // 2
let singletonEx2 = singletonEx.getInstance()
console.log(singletonEx2.count) // 2
singletonEx2.decrease(); // 감소 1
console.log(singletonEx1.getValue()) // 1
console.log(singletonEx1 === singletonEx2); // true
내장 함수 반환을 이용해 싱글톤 패턴을 구현할 수 있으며 프로그램 내에서 하나의 인스턴스만 존재해야 할 때 해당 패턴을 유용하게 쓸 수 있다.
반응형
'JavaScript 기초' 카테고리의 다른 글
[JavaScript] 구조 분해 할당 구문 (2) | 2020.10.20 |
---|---|
[JavaScript] 화살표 함수에 대해서 (0) | 2020.10.20 |
[JavaScript] element.childNodes, element.children, Node.contain (0) | 2020.10.05 |
[JavaScript] apply(), call(), bind()와 this 키워드 (0) | 2020.10.01 |
[JavaScript] Array.prototype.sort() 배열 내장함수 - 정렬 (0) | 2020.10.01 |
댓글