设计模式 单例模式

一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式就叫做单例模式

 

如何才能保证一个类仅有一个实例?一般情况下,当我们创建了一个类(本质是构造函数)后,可以通过new关键字调用构造函数进而生成任意多的实例对象。

        class live{
            show() {
                console.log('我是单例模式对象')
            }
        }
        const live1 = new live()
        const live2 = new live()
        console.log(live1 === live2) // false

上面我们先 new 了一个 live1,又 new 了一个 live2,很明显 live1 和 live2 之间没有任何瓜葛,两者是相互独立的对象,各占一块内存空间。而单例模式想要做到的是,不管我们尝试去创建多少次,它都只给你返回第一次所创建的那唯一的一个实例

 

实现方法:构造函数具备判断自己是否已经创建过一个实例的能力。我们现在把这段判断逻辑写成一个静态方法

        class lives {
            show() {
                console.log('我是单例模式对象')
            }

            static getInstance() {
                // 判断是否已经new过1个实例
                if(!lives.instance) {
                    // 没有的话就先创建它
                    lives.instance = new lives()
                }
                 // 如果这个唯一的实例已经存在,则直接返回
                 return lives.instance
            }
        }

        const lives1 =  lives.getInstance()
        const lives2 =  lives.getInstance()
        console.log(lives1 === lives2)  // true

  

 

 

posted @ 2022-08-02 14:09  live丶  阅读(21)  评论(0编辑  收藏  举报