本文实例讲述了javascript设计模式 – 单例模式。分享给大家供大家参考,具体如下:
介绍:单例模式是结构最简单的设计模式。单例模式用于创建那些在软件系统中独一无二的对象,是一个简单但很实用的设计模式。
定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。
场景:日常编码中会有很多需要重用的场景,例如弹窗,键盘输入这类公共组件,我们往往希望它只创建一次,在第二次使用时重复使用之前创建好的实例。为了节约资源,提高性能,需要保证实例对象的唯一性,就可以采用单例模式实现。使用单例模式要注意:1.某个类只能有一个实例 2.它必须自行创建这个实例 3.它必须自行向整个系统提供这个实例
示例:
单利模式有两个分支,饿汉模式单例和懒汉模式单例。我们对比看下区别:
//懒汉模式单例demo //懒汉模式:只有在我需要实例的时候才会第一次实例化,只有当我第一次调用getInstance时才会去执行init获取实例。 var Singleton = (function () { var instantiated; function init(){ return { sayHello: function () { console.log('hello'); } }; } return { getInstance: function () { if(!instantiated){ instantiated = init(); } return instantiated; } } })(); //只能通过getInstance方法获取对象实例: var instance = Singleton.getInstance(); var instance2 = Singleton.getInstance(); instance.sayHello(); //hello instance2.sayHello(); //hello console.log(instance === instance2); //true //饿汉模式demo //饿汉模式:在类初始化时就立刻执行getInstance进行赋值。 var Singleton = (function () { var instantiated = init(); //初始化时即对instantiated进行赋值 function init(){ return { sayHello: function () { console.log('hello'); } }; } return { getInstance: function () { return instantiated; } } })(); var instance = Singleton.getInstance(); var instance2 = Singleton.getInstance(); instance.sayHello(); //hello instance2.sayHello(); //hello console.log(instance === instance2); //true
以上demo思考一个问题,如果init函数是耗时操作,还能保证每个类只有一个实例吗?
在多线程的场景下,会出现init函数执行过程中再次触发getInstance。就会导致一个类存在多个实例。javascript会出现这样的问题吗?
两种单例模式对比下优缺点:饿汉模式在一开始就实例化,在资源合理利用方面落下风,懒汉模式在多线程情况下需要考虑同时初始化带来的影响。
单例模式总结:
优点:
* 严格控制实例的访问
* 节约系统性能,避免重复创建销毁对象,避免资源浪费
缺点:
* 单例模式的扩展必须修改类主体,这和我们前面介绍的开关原则冲突
* 单例模式职责过重,一定程度违背了单一职责原则,因为单例既提供了业务方法,也提供了创建对象的方法,有一定的功能耦合。
适用场景:
* 系统只需要一个实例对象
* 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例。
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 郑中基.2002-安可ENCORE新歌精选(引进版)【步升】【WAV+CUE】
- 姚璎格《影》头版限量编号24K金碟[WAV+CUE]
- 刘德华《回家的路》2CD[WAV+CUE][963M]
- F4《流星雨》[FLAC整轨][499M]
- 物华弥新鹿角立鹤厉害吗 鹿角立鹤培养建议分享
- 物华弥新芙蓉炉厉害吗 芙蓉炉培养建议分享
- 星之翼手游新手开荒指南大全 星之翼新手怎么快速上手
- 赵传2014-歌声传情3CD[广东音像][WAV+CUE]
- 江蕙2002-台语典藏系列·黄金版8CD[WAVCUE]
- 薰妮1980-雾里玫瑰[香港永恒真存珍藏版][WAV+CUE]
- 《给他爱5》被移植到NS平台:玩会序章就崩溃了
- 《星刃》MV幕后公开 韩国女星BIBI大赞服装设计
- 日本人妻COS《葬送的芙莉莲》尤贝尔:死鱼眼超还原
- 陈升.2019-七天【新乐园】【WAV+CUE】
- 痛仰乐队.2014-愿爱无忧【禾广娱乐】【WAV+CUE】