JS中单例设计模式

在真实项目中,为了实现模块化开发或者团队协作开发,我们经常应用单例模式(一般业务逻辑部分的代码都是依托单例模式设计规划的)


单例模式的由来

long long ago~~ ,JS中都是值类型,没有引用数据类型

var name='李芙蓉';
var age=13;
var sex='女神';

var name='张三';
var age=81;
var sex='未知';

//=>如果后面编写的代码,创建的变量或者函数名和之前的一样,会把之前存储的值替换掉;真实项目中,
团队协作开发,如果是这样来处理,经常会导致相互代码的冲突:`全局变量污染` `全局变量冲突`


后来JS中诞生了对象数据类型,解决了上面出现的污染或者冲突问题


//=>把描述同一件事务的特征或者属性,进行归纳汇总(放在一起),以此来避免全局变量之前的冲突
var person1={
    name:'李芙蓉',
    age:13,
    sex:'小仙女'
};

var person2={
    name:'李四',
    age:81,
    sex:'看着办'
};
person1.age
person2.name


我们把对象数据类型实现 把描述同一件事务的属性或者特征归纳汇总在一起,以此避免全局变量冲突问题 的方式和思想叫做:单例设计模式


//=>单例模式
//1、singleton不仅仅是对象名了,在单例模式中,singleton称之为 “命名空间(nameSpace)”
var singleton={
    xxx:xxx,
    ...
};

var singleton={
    nameSpace1:{
        xxx:xxx,
        ...
    },
    nameSpace2:{
        xxx:xxx,
        ...
    }
    ...
};


把描述同一件事务的属性或者方法存放在某一个命名空间下,多个命名空间中的属性和方法是互不干扰的