Javascript 常用设计模式
转载自: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();