javascript 디자인 모드 - 단일 모드 (singleton pattern)

2007 단어
가장 간단한 단례 모드
var mySingleton = {
    property1: "something",
    property2: "something else",
    method1: function () {
        console. log('hello world' );
    }
};

단일 모드를 확장하여 개인 변수와 개인 방법을 증가시키다
var mySingleton = function () {
    //  
    var privateVariable = 'something private' ;
    //  
    function showPrivate() {
        console. log(privateVariable);
    }
    //  
    return {
        //  
        publicMethod: function () {
            //  
            showPrivate();
        },
        //  
        publicVar: 'the public can see this!'
    };
};
var single = mySingleton();
single.publicMethod();
console.log(single.publicVar);

필요에 따라 초기화
var Singleton = (function() {
    var instantiated;
    function init() {
        //  
        return {
            publicMethod: function () {
                console. log('hello world' );
            },
            publicProperty: 'test'
        };
    }
    return {
        getInstance: function () {
            if (! instantiated) {
                instantiated = init();
            }
            return instantiated;
        }
    };
})();
Singleton.getInstance().publicMethod();

기타 변종
var SingletonTester = (function () {
    function Singleton(options) {
        options = options || {};
        this.name = 'SingletonTester' ;
        this.pointX = args. pointX || 6;
        this.pointY = args. pointY || 10;
    }
    //  holder
    var instance;
    //  
    var _static = {
        name: 'SingletonTester' ,
        getInstance: function (options) {
            if (instance === undefined) {
                instance = new Singleton(options); 
            }
            return instance; 
        }
    }; 
    return _static;
})();
var singletonTest = SingletonTester.getInstance({
            pointX: 5
        });
console.log(singletonTest.pointX);

좋은 웹페이지 즐겨찾기