美文网首页
单例模式

单例模式

作者: 长城_changcheng | 来源:发表于2022-06-12 14:47 被阅读0次

    一、单例模式

    1、概念

    单例模式是Java中最为简单的设计模式,在Java中将其定义为:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”

    2、特性
    • 单例类仅且只能有一个实例。
    • 单例类必须自己创建自己的唯一实例。
    • 单例类必须给所有其他对象提供这一实例。
    3、使用场景

    1、一个班级只能有一个班主任
    2、一个产品只能有唯一序列号

    二、JavaScript中的单例模式

    单例模式是一种设计模式,因此我们只要遵循它的3种特性,我们可以在任何语言中使用该模式,JavaScript也不例外。

    1、在ECMAScript 5中的使用单例模式
    /* 创建单例类SingletonClass*/
    var SingletonClass = (function () {
        var _instance = null;
        var Single = function (time) {
            var Class = function (time) {
                /* 设置单例类的属性 */
                this.time = time;
            };
    
            Class.prototype = {
                constructor: Class,
                /* 设置单例类的方法 */
                show: function () {
                    console.log("电视剧《倚天屠龙记》讲述的是明末时期的故事,时间大概是: " + this.time);
                }
            };
    
            this.instance = function () {
                if (_instance === null) {
                    _instance = new Class(time);
                }
                return _instance;
            }
        };
        return new Single("1356年10月20日");
    })();
    
    
    var singleIns1 = SingletonClass.instance();
    var singleIns2 = SingletonClass.instance();
    console.log(singleIns1.show() === singleIns2.show());
    
    2、在ECMAScript 6中的使用单例模式
    /* 创建单例类SingletonClass*/
    const SingletonClass = (() => {
        let _instance = null;
    
        class Single {
            static instance = () => {
                if (_instance === null) {
                    _instance = new Single("1356年10月20日");
                }
                return _instance;
            };
    
            constructor(time){
                /* 设置单例类的属性 */
                this.time = time;
            }
    
            /* 设置单例类的方法 */
            show() {
                console.log("电视剧《倚天屠龙记》讲述的是明末时期的故事,时间大概是: " + this.time);
            }
        }
        return Single;
    })();
    
    
    const singleIns1 = SingletonClass.instance(),
        singleIns2 = SingletonClass.instance();
    console.log(singleIns1.show() === singleIns2.show());
    

    相关文章

      网友评论

          本文标题:单例模式

          本文链接:https://www.haomeiwen.com/subject/rnzxvqtx.html