常用的javascript设计模式
javascript常用的设计模式大概有以下几种:
-
单体模式/单例模式
-
工厂模式
-
观察者模式(发布者-订阅者模式)
-
策略模式
-
模板模式
-
代理模式
-
外观模式
为什么要使用设计模式
使用设计模式是为了让代码可重用性更高,让代码更容易让人理解、保证代码可靠性。
单体模式/单例模式
单例模式定义了一个对象的创建过程,这个对象只有一个单独的实例,并提供一个访问它的全局访问点。单例保证一个类只有一个实例。实现的方法就是先判断这个实例是否存在,存在则直接返回,不存在则创建一个新的实例再返回。
单例的实现方式有很多种:
最简单的方式如:
var Singleton = function(name) {
this.name = name;
this.instance = null;
}
Singleton.prototype.getName = function() {
console.log(this.name);
}
Singleton.getInstance = function(name) {
if(!this.instance) {
this.instance = new Singleton(name);
}
return this.instance;
}
var s1 = Singleton.getInstance('s1');
var s2 = Singleton.getInstance('s2');
console.log(s1 === s2);
或者使用闭包形式创建单例模式:
var Singleton = function(name) {
this.name = name;
}
Singleton.prototype.getName = function () {
console.log(this.name);
}
Singleton.getInstance = (function(name){
var instance = null;
return function(name) {
if(!instance) {
instance = new Singleton(name);
}
}
})()
var a = Singleton.getInstance('a');
var b = Singleton.getInstance('b');
console.log(a === b);
应用场景
单例模式是一种常用的设计模式,有一些对象我们只需要一个,比如全局对象等。
-
我们可以借用它来划分命名空间;
-
借助单例模式,可以把代码组织的更为一致,方便阅读与维护。
工厂模式
工厂模式的定义:提供创建对象的接口。
应用场景:
-
对象的构建十分复杂
-
需要依赖具体环境创建不同实例
-
处理具有大量相同属性的小对象。