单例模式,它犹如一名孤独的剑客,它是一个只允许被实例化一次的对象。剑客是孤独的,是高傲的,行走江湖仅凭身上一把锋利的利剑,不会多携带任何东西(节省系统资源)。它有一个剑气领域,一个只属于它的空间,别人进不去的空间(命名空间)。

一、剑域-命名空间

我们所知道的,每个剑客高手当其拔剑的时候都会有一个自己的剑域,而踏入者,结果只有一个-死。

当单例模式给我们提供了一个命名空间的时候,它会约束每个人定义的变量,让每个变量都是“孤立”的,使每个人定义的变量不会产生冲突,这样每个人都可以井井有条的管理好自己对象上的属性和方法。

var Qiang = {g: function(id){return document.getElementById(id)},css: function(id, key, value){// 简单的一个样式属性设置this.g(id).style[key] = value}
}

再者就是模块的分明,实际开发当中也是可以用单例模式进行模块的控制。

qiang.dom.addClass            // 添加元素类
qiang.dom.append              // 插入元素
qiang.event.stopPropagation   // 阻止冒泡
qiang.event.preventDefault    // 阻止默认行为
qiang.string.encodeHTML       // 将字符串进行html编码

二、十八般武艺-创建小型代码库

每一个优秀的剑客都有自己招式,而每个招式又都是一层一层的心法进行修炼的。

如上代码写到的,我们在创建自己的小型方法代码库的时候也是可以用单例模式来规范我们自己代码库的各个模块。

var Module = {Title: {title_level1: function() {},title_level2: function() {}// ...},Form: {form_text: function() {},form_pwd: function() {},form_select: function() {},// ...},Table: {table_normal: function() {},table_special: function() {}// ...},// ...
}

三、招式模仿-静态变量

优秀的剑客不仅仅有自己的招式,还可以在观看别人的招式后,进行快速的模仿。

我们的JavaScript当中其实是没有static这类的关键字,但很多时候我们又需要这样的一种变量。JavaScript是灵活多变的,访问变量的方式很多种,例如定义在全局中,再就是定义在函数内部,然后在函数内部定义特权方法进行访问。但要求改变量不能被修改,那么全局定义这一种方式肯定是行不通的。那么我们就可以通过定义在函数内部然后在通过特权方法进行访问便可以做到了,具体操作如下:

//管理静态变量
var Conf = (function() {// 私有变量var conf = {MAX_NUM: 100,MIN_NUM: 1,COUNT: 1000}// 返回取值器对象return {// 取值器方法get: function(name) {return conf[name] ? conf[name] : null}}
})()

使用方式:

var count = Conf.get('COUNT');
console.log(count); //1000

四、慵懒剑客-惰性单例

剑客是孤独的,也是慵懒的,每个剑客都向往着那种安静的喝着酒,沐浴在懒懒的阳光中。无需拔剑的时候从不拔剑毁了自己片刻的宁静。

包括以上的几种情况,还有一种比较常见的情况便是当单例对象需要做一个延时创建的时候,我们可以通过一种“惰性创建”进行延迟创建。

// 惰性单例
var LazySingle = (function() {// 单例实例引用var _instance = null// 单例function Single () {// 这里定义私有属性和方法return {publicMethod: function() {},publicProperty: '1.0'}}// 获取单例对象接口return function() {// 如果为创建单例将创建单例if(!_instance) {_instance = Single()}// 返回单例return _instance}
})()

单例模式,一名孤独的剑客,行走在JavaScript这样的江湖中,它的地位不容小觑!

一入前端深似海,从此红尘是路人系列第七弹之孤独的剑客-单例模式相关推荐

  1. 一入IT深似海 从此妹子为路人

    一入IT深似海,从此妹子为路人.....传者网的那个什么 在我还不知道程序员是什么的时候就选择了编程这条道路,直到现在我不得不说,程序对我吸引真的很大,我喜欢写代码,因为能给人带来成就感.记得当年老师 ...

  2. c语言一次绑定多个控件,一入前端深似海,从此红尘是路人系列第九弹之如何实现一个双向数据绑定...

    前言 简单介绍一下双向数据绑定实现的是一个什么样的东西.首先有两个东西,他们分别是: V-视图层 M-数据层 1.视图层传向数据层:V发生改变,M也发生改变 2.数据层传向视图层:M发生改变,V也发生 ...

  3. 新技术层出不穷,一入前端深似海!

    目前来看,前端开发这个行业面临的一个重要问题是:我们有太多的选择. 我们有足够多的工具.框架.语言.抽象和平台. 一般来说,更多的选择意味着更多的竞争性和创新,然而当选择实在太多太多的时候,我们常常会 ...

  4. 一入侯门深似海,从此萧郎是路人

    <赠婢> 唐:崔郊 公子王孙逐后尘,绿珠垂泪滴罗巾. 一入侯门深似海,从此萧郎是路人. 诗的首两句应该换个顺序翻译,绿珠是美女佳人的代称,泛指容貌姣好的女子,可是这么美丽的女子却在偷偷的哭 ...

  5. 「一入 Java 深似海 」系列课程

    第一期 「一入 Java 深似海 」系列课程 - 第一期 第一节:Java 语言基础 转载于:https://www.cnblogs.com/wangjunwei/p/10393306.html

  6. Java实现小猪佩奇_一入java深似海(1-4期 完整版)

    『课程目录』: ├─第1期 │      开篇 一入 Java 深似?,从此"劝退"成必然.mp4 │      第1节:Java语言基础.mp4 │      第2节:Java面 ...

  7. 一入编码深似海,在达观数据做程序员是怎样一种体验?

    在技术浪潮一波接一波推动人类社会前进的历史进程当中,程序员始终是站在浪尖的群体.2014年起,把每年10月24日(2^10)定义为程序员节.这可能是唯一一个与数字紧密相关的节日--也体现了这个节日的含 ...

  8. 一入Java 深似海

    「一入 Java 深似海 」系列是小马哥 2019 年在 SegmentFault 平台发布的全新付费课程,内容围绕 Java 生态体系而展开,从编程语言.编程模型.代码设计,框架实现以及架构实践等, ...

  9. 数赢云CTO『朱炜』丨一入创业深似海……

    关注"Ai时速"  智慧赢未来!  Ai时速  因着Ai的美好:用激情和速度体验Ai时代! 职业创业|PK分享|进化成长 朱炜 写在前面 " 生命在于折腾,技术改变未来! ...

最新文章

  1. 技巧:两部解决U盘安装windows 7
  2. 再用Udp--聊天工具
  3. python结巴分词 词频统计_一个txt文档,已经用结巴分词分完词,怎么用python工具对这个分完词的文档进行计算统计词频,求脚本,非...
  4. 【算法入门漫画】:“排序算法” 大总结
  5. Spring Boot使用layui的字体图标时无法正常显示 解决办法
  6. ArrayList 面试10连问
  7. 找不到“javax.servlet.annotation.WebServlet“解决方法
  8. 单片机实训简易计算机,单片机简易计算器实验报告.doc
  9. 判断字符串是否为数字的函数
  10. 一个架构师谈什么是架构,以及怎么成为架构师
  11. Mac Python IDLE中如何更改字体
  12. 现代通信原理2.3:为什么我们这么关注傅立叶变换?
  13. 解决dephi使用Word时出现“没有注册接口”的情况。
  14. PHP 生成 ppt,PHP生成PPT文件
  15. Sencha学习笔记4: Creating your First App - 官方创建您的第一个Sencha Touch应用指导
  16. Mobaxterm终端工具和Neokylin7基础
  17. 腾讯云服务器的简单使用
  18. 关于互相尊重和直言有讳
  19. 拉上谷歌高通 三星围攻苹果
  20. 程序员十二星座行为大赏

热门文章

  1. 15款提高表格操作的jQuery插件
  2. Python与数据库(1)mysql
  3. 解析Linux内核模块的链接顺序
  4. 利用Python3发送邮件-亲测可行
  5. 华为机试——明明的随机数
  6. Shell——变量详解及注意点
  7. 【AI视野·今日CV 计算机视觉论文速览 第160期】Wed, 25 Sep 2019
  8. 【数字图像处理】Canny边缘检测详解及编程实现
  9. 0309随堂笔记 银行转帐功能 对向封装 1615278206
  10. 案例 月工作列表 c# 1614099857