JavaScript设想形式-第一部份:单例形式、组合形式和表面形式

JavaScript设想形式-第一部份:单例形式、组合形式和表面形式

设想形式是一些牢靠的编程体式格局,有助于保证代码越发易于保护、扩大及星散,一切设想形式在建立大型JavaScript应用程序时均不可或缺

单例形式

单例形式是指在您要确保一直只建立一个对象实例时运用的设想形式。在面向对象的典范编程言语中,建立单例形式背地的观点若干有点让人难以邃晓,因为个中包括一个同时具有静态及非静态属性和要领的类。但本文重要议论JavaScript,因此,因为JavaScript是一种不包括真正类的动态言语,因此JavaScript版本的单例形式极为简朴。

为何须要采纳单例形式?
在我最先引见实行细节之前,我须要讨论一下为何单例形式关于应用程序异常有效。它能够确保您只要一个对象实例能够现实派上用场。在服务器端言语中,您能够会运用单例处置惩罚数据库衔接,这是因为为一个要求建立多个数据库衔接纯粹是一种资本糟蹋。一样,在前端JavaScript中,您能够会愿望将负责处置惩罚一切AJAX要求的某个对象设置为单例。划定规矩异常简朴:假如每m次建立新实例时,实例的功用均完全相同,那末将其设置为单例。

然则,这并非采纳单例的唯一缘由。至少在JavaScript中,单例能够让您保证定名空间对象和函数有条有理,防备它们与全局定名空间殽杂,您能够邃晓,这是一种恐怖的主意,特别是在运用第三方代码的情况下。运用定名空间单例形式也被称为模块设想形式。

展现单例形式
要建立单例,您只需建立一个对象笔墨。

var Singleton = {
    prop: 1,
    another_prop: 'value',
    method: function() {...},
    another_method: function() {...}
};

您还能够建立具有私有属性和要领的单例,但因为设想运用关闭函数和自挪用匿名函数,因此轻微有些难以邃晓。函数内部声清楚明了一些部分函数和/或变量。然后,建立并返回一个对象笔墨,个中包括一些援用您在更大的函数范围内声明的变量和函数要领。紧随函数声明安排()即可马上实行外部函数,并将所得的对象笔墨费赔给变量。假如这些引见让你觉得疑心,那末请看下面的代码,随后我将会作出进一步的申明。

var Singleton = (function() {
    var private_property = 0,
        private_method = function () {
            console.log('This is private');
        }
        
    return {
        prop: 1,
        another_prop: 'value',
        method: function() {...},
        another_method: function() {...}
    }
}());

关键在于,当经由过程某个变量地点函数火线的var声明该变量时,该变量只能在函数内部经由过程该函数内声明的各函数(比方对象笔墨内函数)举行接见。return语句可协助我们回到在外部函数自行实行后分配给单例的对象笔墨。

    原文作者:puhongru
    原文地址: https://segmentfault.com/a/1190000008076119
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞