单例

今天不太舒服。。。可是不想断更。

    最近感觉到技术的提高有点迷惘。其实前端东西挺杂,有些地方有时候想不起来倒没什么,做过笔记的就翻一翻,某个bug研究觉得奇怪就查一查。技术博客、论坛帖子看多了就发现内功才是最重要的。

    这时候设计模式就登场了。单例算是最基础最简单的一个设计模式了:

    该类只有一个实例,且提供全局访问点。

    没错,就是上面那句话。

 1 var singleton = (function() {
 2     var instance;
 3     function init() {
 4       //定义私有变量和方法
 5       //...
 6       return {
 7         //返回公有变量和方法
 8         //...
 9       }
10     }
11     return {
12       //对外暴露获取实例的接口
13       getInstance:function() {
14         if(!instance){
15           instance = init();
16         } 
17         return instance;
18     }
19   }
20 })()

上面是个最简单的单例的构建方法,在一个自执行匿名函数中返回单例的接口。

讲真,刚接触的时候我首先想到的是用单例来实现全局弹窗,但想想觉得完全没必要。后来看到某书中举得单例的例子是创建唯一id呀、web页面行为的计数啊什么的,恍然大悟。但其实,重点还是全局可访问啦,毕竟单个实例节省了开销。vuex的设计思想也是创建一个全局可访问的store,存储共享状态的变量,然后在其他组件中引用这些变量,只是vuex不是一个单纯的单利例而已。

上次买了本《js设计模式》,硬着头皮看了70%,大半年前的事情了。现在都忘得差不多了。。。。羞愧

原文地址:https://www.cnblogs.com/alan2kat/p/7450465.html