200字
设计模式-单例模式
2022-09-25
2026-04-30

1. 简介

在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

1-1. 定义

  • 保证一个类仅有一个实例,并提供一个访问它的全局访问点

1-2. 注意

  • 单例类只能有一个实例。
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其他对象提供这一实例【全局访问】。

1-3. 优点

  • 减少了内存的开销
  • 减少了对资源的多重占用

2. 实现

针对单一场景,如果存在多个场景需要重复编写

var Test = (function() {
    var instance;
    return function (name){
        if (typeof instance === 'object') {
            return instance;
        }
        instance = this;
        this.name = name;
    }
})();

var a = new Test();
Test.prototype.lastName = 'bifang';
var b = new Test();

console.log(a === b, a.lastName, b.lastName);  //true 'bifang' 'bifang'

3. 提取通用单例

通过方法将普通方法转换为单例方法

var getSingle = function( fn ){
    var result;
    if(!result){
        result = fn.apply(this, arguments)
    }
    return function(){
        return result
    };
};

//使用
var singleFn = getSingle(fn);

评论