단례 모델 분석과 사상

11048 단어
singleton(단례) 모델이 잘 알려진 이유는 클래스의 실례화 횟수를 한 번만 제한하기 때문이다. 단례 모델은 이 실례가 존재하지 않는 부지런함에서 하나의 방법으로 클래스를 만들어서 클래스를 만드는 새로운 실례를 실현할 수 있다.실례가 이미 존재하면 대상의 인용을 간단하게 되돌려줍니다.단일 모드는 정적 클래스(또는 대상)와 다르다. 초기화를 미룰 수 있기 때문이다. 이것은 보통 정보가 필요하기 때문이다. 이 정보는 초기화 기간에 얻을 수 없을 수도 있다. 이전의 인용 코드를 눈치채지 못하면 검색 방법을 제공하지 못한다. 이것은 대상도 아니고 싱글이 되돌아오는 클래스도 아닌 구조이기 때문이다. js에서singleton은 공유 자원 이름 공간을 충당하여 전역 이름 공간에서 코드를 분리하여 함수에 단일 접근점을 제공합니다.
var mySingleton = (function () {
    // singleton 
    var instacnce;
    function init() {
        // 
        funciton privateMethod(){
            //...
        }
        var privateVariable = "private";
        var privateRandomNumber = Math.random();
        /* */
        return {
            // 
            publicMethod: function () {
                console.log('hello world');
            },
            publicProperty: 'test',
            getRandomNumber:function(){
        return privateRandomNumber;
        }
        };
    }

    return {
        // singleton , , 
        getInstance: function () {
            if (!instance) {
                instance= init();
            }
            return instance;
        }
    };
})();

/* :*/
mySingleton .getInstance().publicMethod();
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

singleton :

  1. , 。

    singleton : singleton , , , 。 
    , , , 。

, ,singleton 。

var SingletonTester = (function () {

    // : 
    function Singleton(options) {

        // options ( )
        options= options|| {};
        // name 
        this.name = 'SingletonTester';
        // pointX 
        this.pointX = options.pointX || 6; // , 
        // pointY 
        this.pointY = options.pointY || 10;

    }

    // 
    var instance;

    // 
    var _static = {
        name: 'SingletonTester',

        // 
        // Singleton 
        getInstance: function (options) {
            if (instance === undefined) {
                instance = new Singleton(options);
            }
            return instance;
        }
    };
    return _static;
})();

var singletonTest = SingletonTester.getInstance({ pointX: 5 });
console.log(singletonTest.pointX); //   5 
  • 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

    singleton , 。 : 、 ,singleton

좋은 웹페이지 즐겨찾기