博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript设计模式-第一部分:单例模式、组合模式和外观模式
阅读量:6670 次
发布时间:2019-06-25

本文共 1312 字,大约阅读时间需要 4 分钟。

设计模式是一些可靠的编程方式,有助于保证代码更加易于维护、扩展及分离,所有设计模式在创建大型JavaScript应用程序时均不可或缺

单例模式

单例模式是指在您要确保始终只创建一个对象实例时使用的设计模式。在面向对象的经典编程语言中,创建单例模式背后的概念多少有点让人难以理解,因为其中包含一个同时具有静态及非静态属性和方法的类。但本文主要讨论JavaScript,因此,由于JavaScript是一种不包含真正类的动态语言,因此JavaScript版本的单例模式极其简单。

为什么需要采用单例模式?

在我开始介绍实施细节之前,我需要探讨一下为什么单例模式对于应用程序非常有用。它能够确保您只有一个对象实例能够实际派上用场。在服务器端语言中,您可能会使用单例处理数据库连接,这是由于为一个请求创建多个数据库连接纯粹是一种资源浪费。同样,在前端JavaScript中,您可能会希望将负责处理所有AJAX请求的某个对象设置为单例。规则非常简单:如果每m次创建新实例时,实例的功能均完全相同,那么将其设置为单例。

但是,这并不是采用单例的唯一原因。至少在JavaScript中,单例可让您保证命名空间对象和函数井然有序,防止它们与全局命名空间混淆,您可能明白,这是一种可怕的想法,特别是在使用第三方代码的情况下。使用命名空间单例模式也被称为模块设计模式。

展示单例模式

要创建单例,您只需创建一个对象文字。

var Singleton = {    prop: 1,    another_prop: 'value',    method: function() {...},    another_method: function() {...}};

您还可以创建具有私有属性和方法的单例,但由于设计使用封闭函数和自调用匿名函数,因而稍微有些难以理解。函数内部声明了一些局部函数和/或变量。然后,创建并返回一个对象文字,其中包含一些引用您在更大的函数范围内声明的变量和函数方法。紧随函数声明放置()即可立即执行外部函数,并将所得的对象文字费赔给变量。如果这些介绍让你感到困惑,那么请看下面的代码,随后我将会作出进一步的说明。

var Singleton = (function() {    var private_property = 0,        private_method = function () {            console.log('This is private');        }            return {        prop: 1,        another_prop: 'value',        method: function() {...},        another_method: function() {...}    }}());

关键在于,当通过某个变量所在函数前方的var声明该变量时,该变量只能在函数内部通过该函数内声明的各函数(例如对象文字内函数)进行访问。return语句可帮助我们回到在外部函数自行执行后分配给单例的对象文字。

转载地址:http://bolxo.baihongyu.com/

你可能感兴趣的文章
苹果玩心机:取消GPU芯片商订单 打压股价再收购?
查看>>
安全是智慧城市建设的重中之重
查看>>
视频会议系统迎来第四次浪潮
查看>>
云计算崛起带动产业革命 智慧城市已悄然来临
查看>>
报告显示:被调研中国企业超85%已从数字转型中获得回报
查看>>
Stimergy公司的边缘平台加热法国公共游泳池
查看>>
安防企业以内养外适应供给侧改革
查看>>
中国移动2016年低端路由器和低端交换机产品结果出炉
查看>>
ABB公司为Hypertec公司蒙特利尔数据中心设计变电站
查看>>
索尼霸图像传感器头把交椅 巨头林立虎视眈眈
查看>>
4G速度的100倍:美国Verizon宣布完成5G无线规范标准制定
查看>>
大数据产业 能否带领内蒙古跨越资源陷阱?
查看>>
联想:模块化智能手机将为物联网行业注入新动力
查看>>
强势标准各占山头 物联网进程受阻
查看>>
惠普的软件定义IT和芯片级安全
查看>>
东方日升拉美光伏电站项目 将进入首期施工
查看>>
零售业已进入第三阶段,大数据助力实现更多价格歧视
查看>>
软件探索性测试 笔记二
查看>>
那个叫“中国移动”的精神病人就要被治愈了
查看>>
物联网领域,华为将主攻四大市场
查看>>