Keep moving just play & have fun

js设计模式

2018-03-23
May

阅读:

Web

常用的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);

应用场景

单例模式是一种常用的设计模式,有一些对象我们只需要一个,比如全局对象等。

  1. 我们可以借用它来划分命名空间;

  2. 借助单例模式,可以把代码组织的更为一致,方便阅读与维护。

工厂模式

工厂模式的定义:提供创建对象的接口。

应用场景:

  1. 对象的构建十分复杂

  2. 需要依赖具体环境创建不同实例

  3. 处理具有大量相同属性的小对象。


Comments

Content