//只允许实例化一次的对象类。
//定义一个命名空间x,把多种方法放在x中,就好像jQ中的$,调用时需要x.xx,防止被其他人写的同名方法覆盖
var x = {
g: function(){ },
xx: function(){
this.g();
},
asd: {
asd1: function(){ }
}
}
x.xx();
//通过单例模式也可以把代码根据功能分为不同模块
//js无静态变量,可放在函数内部,通过特权方法访问,为了创建后就能使用,需要让函数自执行一遍。
var c = (function(){
var cc = { //私有变量
COUNT: 100
}
return {
//对cc进行取值的方法,外部只能通过该方法取值,无法修改COUNT的值
get: function(){
return cc.COUNT;
}
}
})();
//惰性单例
//有时对于单例对象需要延迟创建,即惰性创建。
var cc = (function(){
var _instance = null;
function s(){
return{
aa: 1
}
}
return function(){
if(!_instance){
_instance = s();
}
return _instance;
}
})();
console.log(cc().aa); //1
二-五(工厂模式、建造者模式、原型模式、单例模式)均属于创建型设计模式
林秀栋的技术博客