싱글턴 패턴의 기본 구조:
MyNamespace .Singleton = function () {
return {};
}();
예:
MyNamespace.Singleton = (function() {
return { // Public 멤버.
publicAttribute1: true,
publicAttribute2: 10,
publicMethod1: function() {
...
},
publicMethod2: function(args) {
...
}
};
})( );
그런데 코드가 로드되자마자 바로 생성되는 싱글턴은 어떻게 해야 할까요? C#에서 싱글톤을 구현하는 방법을 상상해 보세요 :) 다음 패턴을 사용하세요.
MyNamespace.Singleton = (function() {
function constructor() { // 일반적인 싱글톤 코드는 모두 여기에 들어갑니다.
...
}
return {
getInstance: function() {
// 여기에 제어 코드를 입력합니다.
}
}
})()
구체적으로는 싱글턴 Put을 만듭니다. 생성자에 코드를 추가하고 처음 호출될 때 인스턴스화합니다.
전체 코드는 다음과 같습니다.
MyNamespace.Singleton = (function() {
var UniqueInstance; // 단일 인스턴스를 보유하는 Private 속성.
function constructor() { // 모든 일반 싱글톤 코드가 여기에 들어갑니다.
...
}
return {
getInstance: function() {
if(!uniqueInstance) { // 다음과 같은 경우에만 인스턴스화합니다. 인스턴스가 존재하지 않습니다.
uniqueInstance = constructor();
}
return UniqueInstance;