摘要:以上,吐槽完毕设计模式主要分为三大类创建型模式结构型模式行为模式。单例模式所谓单例模式,是指仅实例化该类一次,该实例提供一个众所周知的全局访问点。单例模式暂时这么些,如果后续了解更多会默默补充上来,下一次会分享工厂模式。
初入js坑时,满脸懵逼的我认为设计模式就该是后端头疼的,对,头疼,盖因粗略扫描下来也就十几二十种吧,彼时颇有种隔岸观火看到你过得不好我也就安心的自得。染鹅,打脸啪啪的,实不应忘记javascript前可不是白缀个java的,怎么能不趟一下设计模式这“浑水”。
--以上,吐槽完毕
设计模式主要分为三大类:创建型模式、结构型模式、行为模式。本篇只涉及创建型模式,表问我为什么,因为其他两种我也不了解,泪目。
所谓创建型模式,是指基于创建对象的概念。单例模式、工厂模式、抽象工厂模式就属于典型的创建型模式。
单例模式所谓单例模式,是指仅实例化该类一次,该实例提供一个众所周知的全局访问点。为什么要限制仅实例化一次呢?因为全局只需要一个poly啊。例如在封装组件Alert的时候,只需要实例化一次,将该实例挂在全局对象下,这样除了第一次调用的时候需要实例化,后续都是在确认已有Poly实例后,直接调用已有的唯一实例,只是需要传入不同的提示语句作为参数。
- 懒汉式
// code 1 var poly = (function(){ var instance; var Poly = function(){ this.name = "Poly"; }; return { getInstance: function(){ if (!instance) { instance = new Poly(); console.log("init onece"); } return instance; } } })();
运行结果如下:
以上代码,只打印了一次init onece,除了第一次走进if (!instance)条件语句中进行实例化,后续两次并没有实例化,而是直接返回Poly的实例。
- 饿汉式
你应该看出来了,以上代码是在调用poly对象的getInstance方法时才进行实例化,还有一种情形是poly对象获得的直接是Poly类的一个实例,如下:
// code 2 var poly = (function(){ var instance; var Poly = function(){ this.name = "Poly"; }; if (!instance) { instance = new Poly(); console.log("init onece"); } return instance; })();
运行结果如下:
code 1 和 code 2所展示的是单例模式的两种使用方式:懒汉式和饿汉式(这名字略粗犷的赶脚?蜜汁微笑?)。懒汉式即延迟到使用时才实例化,饿汉式即一开始加载类时就实例化。前者省空间,后者省时间,按需食用,oh不,按需使用。
单例模式暂时这么些,如果后续了解更多会默默补充上来,下一次会分享工厂模式。
话说,貌似说了很多“下一次”这类话?难怪懂得这么多道理还减不好这场肥。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81216.html
摘要:文章系列设计模式单例模式设计模式策略模式设计模式代理模式概念单例模式的定义是保证一个类仅有一个实例,并提供一个访问它的全局访问点。在开发中,单例模式的用途同样非常广泛。 前言 本系列文章主要根据《JavaScript设计模式与开发实践》整理而来,其中会加入了一些自己的思考。希望对大家有所帮助。 文章系列 js设计模式--单例模式 js设计模式--策略模式 js设计模式--代理模式 概念...
摘要:什么是设计模式设计模式是一种能够被反复使用,符合面向对象特性的代码设计经验的总结,合理的使用设计模式能够让你得代码更容易维护和可靠设计模式的类型共分为创建型模式,结构型模式,行为型模式三种创建型模式创建型模式是对一个类的实例化过程进行了抽象 什么是设计模式 设计模式是一种能够被反复使用,符合面向对象特性的代码设计经验的总结,合理的使用设计模式能够让你得代码更容易维护和可靠设计模式的类型...
摘要:什么是单例模式单例模式是一种十分常用但却相对而言比较简单的单例模式。对象就是单例模式的体现。总结单例模式虽然简单,但是在项目中的应用场景却是相当多的,单例模式的核心是确保只有一个实例,并提供全局访问。 1. 什么是单例模式? 单例模式是一种十分常用但却相对而言比较简单的单例模式。它是指在一个类只能有一个实例,即使多次实例化该类,也只返回第一次实例化后的实例对象。单例模式不仅能减少不必要...
阅读 2898·2023-04-26 02:22
阅读 2228·2021-11-17 09:33
阅读 3106·2021-09-22 16:06
阅读 1010·2021-09-22 15:54
阅读 3480·2019-08-29 13:44
阅读 1858·2019-08-29 12:37
阅读 1266·2019-08-26 14:04
阅读 1863·2019-08-26 11:57