Javascript 常用设计模式

时间:2023-02-01 03:56:51

转载自:https://blog.csdn.net/buptlyz/article/details/52018193

单例模式(模块模式):确保始终只创建一个实例的对象时使用的设计模式。

为什么需要采用单例模式?

在服务器端语言中,您可能会使用单例处理数据库连接,这是由于为一个请求创建多个数据库连接纯粹是一种资源浪费。

同样,在前端 JavaScript 中,您可能会希望将负责处理所有 AJAX 请求的某个对象设置为单例。

规则非常简单: 如果每次创建新实例时,实例的功能均完全相同,那么将其设置为单例。

var Single=(function(){
//私有属性和特权方法
var private_property=0;
var private_method=function(){
console.log('this is private.');
}
return { //返回一个对象字面量
prop:1,
method:function(){
private_method();
return private_property;
}
}
})();
console.log(Single.prop);
console.log(Single.method());

单例通常作为全局对象而存在的,不会把它传给函数。

2.增强的模块模式:适用于单例必须是某类型的实例。

var application=(function(){
var private_variable=10;
function private_methods(){
return false;
} var object=new Array();
object.publicProperty=20;
object.publicMethod=function(){
private_variable++;
return private_methods();
}
return object;
})(); console.log(application.publicMethod())

3.工厂模式

function createObject(name,age){
var o=new Object();
o.name=name;
o.age=age;
o.sayName=function(){
console.log(this.name);
}
o.addYear=function(){
console.log(++this.age);
}
return o;
} var obj=createObject('alex',20);
obj.sayName();
obj.addYear();