单例设计模式(singleton pattern)
最基础的单例模式模型:
var obj = {
a:12,
b:13,
...
};
在单例设计模型中,OBJ不仅仅是对象名,它被称为“命名空间[NameSpace]”,把描述事务的属性存放到命名空间中,多个命名空间是独立分开的,互不冲突
var p1={
name:"张三",
age:33
};
var p2={
name:"李四",
age:44
};
单例每一个命名空间都是Object这个内置基类的实例,而实例之间是相互独立互不干扰的,所以我们称它为“单例:单独的实例”.
高级单例模式
实现方式 在给命名空间赋值时,不是直接赋值一个对象,而是先套个自执行函数,形成一个私有作用域,在这个私有作用域里创建一个堆内存,做为返回值,把堆内存地址赋值给命名空间.(私有作用域里的某些内容被占用,成为不销毁的栈内存)
好处:我们可以在这个私有作用域中创造很多内容(变量或函数等等),哪些需要供外部调取使用的,我们暴露到返回的对象中(模块化实现的一种思想)
var nameSpace = (function () {
var a = "xxx";
function test1() {
//...
}
function test2() {
}
return {
test1: test1,
test2: test2
}
})();
工厂模式
实现方式 把实现相同功能的代码进行“封装”,以此来实现“批量生产”(后期想要实现这个功能,我们只需要执行函数即可)
好处:低耦合高内聚:减少页面中的冗余代码,提高代码的重复使用率
function create(name, age) {
var o = {};
o.name = name;
o.age = age;
return obj;
}
var p1 = create('xxx', 11);
var p2 = create('xxx', 22);