一个人的寂寞-单例模式

1.单例模式又被称为单体模式,是指允许实例化一次的对象类。有时也用一个对象来规划一个命名空间,并井井有条地管理对象上的属性和方法
单例模式常用来定义命名空间

var ming={
    g:function(id){
        return document.getElementById(id);
    },
    css:function(id,key,value){
        this.g(id).style[key]=value;
    }
};

2.模块分明–单例模式还可以用来管理代码库的各个模块,比如
baido.dom.addClass
baidu.dom.append
baidu.event.stopPropagation
baidu.event.preventDefault
baidu.event.trim
baidu.string.encodeHTML

3.写小型方法库的时候可使用单例模式来规范我们自己代码库的

var M={
    Unil:{
        unil_method1:function(){},
        unil_method2:function(){}
    },
    Tool:{
        tool_method1:function(){},
        tool_method2:function(){}
    },
    Ajax:{
        get:function(){},
        post:function(){}
    },
    other:{
        //...
    }
};

/*使用*/
M.Unil.unil_method1();
M.Tool.tool_method1();
M.Ajax.get();

4.无法修改的静态变量

var Conf=(function(){
    var conf={
        MAX_NUM:100,
        MIN_NUM:1,
        COUNT:1000
    };

    return {
        get:function(name){
            return conf[name]? conf[name] : null;
        }
    };
})();

var count=Conf.get('COUNT');
console.log(count);

5.惰性单例

var LazySingle=(function(){
    var _instance=null;

    function Single(){
        return {
            publicMethod:function(){},
            publicProperty:'1.0'
        };
    }

    return function(){
        if(!_instance){
            _instance=Single();
        }
        return _instance;
    };
})();

console.log(LazySingle().publicProperty);

猜你喜欢

转载自blog.csdn.net/roamingcode/article/details/81671475