javascript设计模式-单例模式

单例模式,是创建型设计模式的一种,又被称为单体模式,是只允许实例化一次的对象类。有时也用来规划一个命名空间。

 1 var Util = {
 2     getName: function () {
 3         console.log(‘wp‘)
 4     },
 5     getAge: function () {
 6         console.log(25)
 7     },
 8     getAll: function () {
 9         this.getName();
10         this.getAge();
11     }
12 }
13 Wang.getAll()

除了可以用来定义命名空间外,还可以管理代码库的各个模块。

例:

 1 var Util = {
 2     Tool: {
 3         tool1: function () {
 4             ...
 5         },
 6         too2: function () {
 7             ...
 8         }
 9     },
10     Ajax: {
11         get: function () {
12             ...
13         },
14         post: function () {
15             ...
16         }
17     },
18     Animate: {
19         move: function () {
20             ...
21         },
22         rotate: function () {
23             ...
24         }
25     }
26 }
27 Util.Tool.tool1();

例外,使用单例模式,还可以设置无法修改的静态变量

var Conf = (function () {
    var conf = {
        CONF_A: 100,
        CONF_B: 200,
        CONF_C: 300
    }
    return {
        get: function (name) {
            return conf[name] ? conf[name] : null
        }
    }
})();
var conf_a = Conf.get(‘CONF_A‘);
console.log(conf_a);  // 100

说明:因为将静态变量定义在函数对象里,而函数内部只提供了get方法,因此只能在外部通过特权方法访问到这些静态变量,但是无法修改这些静态变量

时间: 2024-08-09 02:20:26

javascript设计模式-单例模式的相关文章

[读书笔记] JavaScript设计模式: 单例模式

单例模式:保证一个类只有一个实例,并提供一个可以访问它的全局访问点. 一种简单.方便的写法就是用一个变量来标识当前类是否已经创建过对象,如果有,则返回已经创建好的对象,否则创建一个新对象,并将其返回. var Singleton = function(name) { this.name = name; this.instance = null; } Singleton.prototype.getName = function() { alert(this.name); } Singleton.g

JavaScript 设计模式 - 单例模式

单例模式 用于保存全局变量,减少内存使用等 [实现代码] var MyNameSpace = {}; MyNameSpace.Singleton = (function() { // private members var privateAttribute = false; // private functions function privateMethod1() { ... } return { // public members publicAttribute1: true, public

【摘】JavaScript设计模式与开发实践--单例模式

本文章所有内容均摘自<Javascript设计模式与开发实践>一书(有兴趣的可以购买),加入了一点点自己的理解,写这篇文章的目的是,加强自身对设计模式的理解,以及对于没有接触过这一块的入门者的参考. 阅读本章内容,需要具备Javascript面向对象的知识,否则阅读起来可能会些许困难. 设计模式 单例模式 策略模式 代理模式 迭代器模式 发布-订阅模式 命令模式 组合模式 模板方法模式 享元模式 职责链模式 中介者模式 装饰者模式 状态模式 适配器模式 单例模式 单例模式的定义:保证一个类仅有

JavaScript设计模式 Item 6 --单例模式Singleton

单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池.全局缓存.浏览器的window对象.在js开发中,单例模式的用途同样非常广泛.试想一下,当我们单击登录按钮的时候,页面中会出现一个登录框,而这个浮窗是唯一的,无论单击多少次登录按钮,这个浮窗只会被创建一次.因此这个登录浮窗就适合用单例模式. 1.单例模式的使用场景 在使用一种模式之前,我们最好要知道,这种模式的使用场景.用了这么久的单例模式,竟全然不知!用它

【Javascript设计模式1】-单例模式

<parctical common lisp>的作者曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案. 不管是弱类型或强类型,静态或动态语言,命令式或说明式语言.每种语言都有天生的优缺点.一个牙买加运动员, 在短跑甚至拳击方面有一些优势,在练瑜伽上就欠缺一些. 术士和暗影牧师很容易成为一个出色的辅助,而一个背着梅肯满地图飞的敌法就会略显尴尬. 换到程序中, 静态语言里可能需要花很多功夫来实现装饰者,而js由于能随时往对象上

【javascript设计模式】构造器模式、模块模式、单例模式

构造器模式(Constructor) 构造器模式是学习js最早接触的一种,实现主要如下: 1 function myObject(name){ 2 this.name = name; 3 } 4 5 myObect.propotype = function sayName(){ 6 alert(this.name); 7 } 使用的时候需要new一个对象. 1 var myObj = new myObject('hello'); 2 myObj.sayName(); 模块模式(Module) 模

Javascript面向对象之三单例模式-《javascript设计模式》笔记

1.单例模式概述源自百度百科对于单例模式的定义:单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 在javascript的世界里,其实没有严格的对象和类定义,“一切皆对象”使得javascript中都是对象,不能像java,c++或者php使用特定的方法返回一个实例来实现,因此对javascript来说,我们要创造的是一个“不能被多次实例化的”对象,也就是说只能实例化一次的对象. 2.简单单例模式:只能实例化一次的对象也

[JavaScript设计模式]惰性单例模式

惰性单例模式 之前介绍了JS中类的单例模式,这次我们讨论下单例模式的应用.在众多网站中,登录框的实现方式就是一个单例,点击一次就展示一次,所以我们可以在页面加载好的时候就创建一个登录框,点击页面上的登录按钮时,用于控制它的显示和隐藏. 代码实现: 登录 ``` --> 这样的问题就是,如果用户进来后所有的操作根本没有用到登录,那创建登录框这个操作就是无用的,所以改进为当用户点击登录按钮时才开始创建登录框,如下: 登录 ``` --> 现在达到了惰性的目的,但失去了单例的效果.每次点击登录都会创

javascript设计模式

javascript设计模式 阅读目录 什么是设计模式 单体模式: 工厂模式: 单例模式 观察者模式(发布订阅模式) 策略模式 模板模式 代理模式 外观模式 设计模式太多了,貌似有23种,其实我们在平时的工作中没有必要特意去用什么样的设计模式,或者你在不经意间就已经用了设计模式当中的一种.本文旨在总结平时相对来说用的比较多的设计模式. 回到顶部 什么是设计模式 百度百科: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是