《Javascript设计模式》读书笔记——单体模式

单体对象都是在脚本加载时被创建出来。如下代码:

var Singleton = (function() { // 普通的单体模式
    // code here

    return {

    };
})();

而对于资源密集型的或配置开销甚大的单体,也许更合理的做法是将其实例化推迟到需要使用它的时候。这种技术被称为“惰性加载(lazyloading)”,它最常用于那些必须加载大量数据的单体。而那些被用作命名空间,特定网页专用代码包装器或组织相关实用方法的工具的单体最好立即实例化。
这种惰性加载单体的特别之处在于,对它们的访问必须借助于一个静态方法。应该这样调用其方法:Singleton.getInstance().methodName(),而不是这样调用:Singleton.methodName()。getInstance方法会检查该单体是否已经被实例化。如果还没有,那么它将创建并返回其实例。若单体已经被实例化过,那么它将返回现有实例。

对比普通的单体模式和惰性加载的单体模式:

var Singleton = (function() { // 惰性加载的单体模式
    var uniqueInstance = null;

    function constructor() {
        // code here

        return {

        };
    }

    return {
        getInstance : function() {
            if(!uniqueInstance) {
                uniqueInstance = constructor();
            }
            return uniqueInstance;
        }
    };
})();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值