JavaScript中的设计模式:单例模式

定义

单例模式就是一个类只能实例化一个对象,并且提供了一个访问它的全局访问点。

一般在实现登陆框,或者一个全局的控制器都会用到单例模式。现实中有window对象,线程池,全局缓存等。

简单实现

var Person = function(name){
    this.name = name;
    this.instance = null;
};
Person.getInstance = function(name){
    if(!this.instance){
        this.instance = new Person(name);
    }
    return this.instance;
}

种类

单例模式的实现由很多种方法,他们也有不同的作用。

1.用代理实现的单例

有时候,如果想让一个类既可以通过代理创建一个实例,又可以使用普通的方法new很多实例,这种情况就会用到代理。

var Person = function(name){
    this.name = name;
};
var CreatePerson = (function(){
    var instance;
    return function(name){
        if(!instance){
            return new Person(name);
        }
        return instance;
    }
});

上面代码中,如果我们要创建一个实例,就用createPerson来创建,如果像普通对象一样,就用new创建。

2.惰性单例

其实开始介绍的简单单例模式即是惰性单例,也就是说,这个实例在需要的时候才会创建。而不是一开始就创建。

时间: 2024-10-16 00:20:47

JavaScript中的设计模式:单例模式的相关文章

Android开发中的设计模式—单例模式的详细解释

Android开发中的设计模式-单例模式的详细解释: 1. 单例模式的特点: (1).保证一个类只有一个实例 (2).提供一个能访问到他的全局访问点. (3).构造函数声明为私有的,从而阻止了在类外创建对象 2. 种类: (1).饿汉式单例模式 (2).懒汉式单例模式 3. 代码分析: (1).饿汉式单例模式: //类加载的时候对象就实例化了. private static Single mSingle = new Single(); public static Single getInstan

Android中的设计模式-单例模式

Android中的设计模式-单例模式 单例模式算是比较常用的模式,在Java中如果想要一个JVM中只存在某个类的一个实例,就需要使用到单例模式,而只存在一个实例的需求一般是因为: 1,对象实例比较大和复杂,创建开销很大. 2,只需要一个实例来维护整个功能的流程与交互. 例如Android中的电话应用启动时,对于单卡单待的电话,只创建一个Phone对象,用来管理RIL,CallTracker,ServiceStateTracker等对象,手机中不存在第二个Phone对象去和RILC通信. 类图 单

.net中的设计模式---单例模式

20170312:学习原因是公司用到sprint.net,托管方法,防止类多次实例化,浪费空间 .net设计模式: Net设计模式实例之单例模式( Singleton Pattern)  一 : 单例模式的简介:(Brief Introduction) 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点.单例模式因为Singleton封装它的唯一实例,它就可以严格地控制客户怎样访问它以及何时访问它.简单说就是单一模式:仅能有你一个人访问: 二.解

Django中settings设计模式(单例模式)

配置文件: 需求:配置文件,默认配置和手动配置分开,参考django的配置文件方案,默认配置文件放在项目容器内部,只让用户做常用配置. /bin/settings.py(手动配置) PLUGIN_ITEMS = { "nic": "src.plugins.nic.Nic", "disk": "src.plugins.disk.Disk", } API = "http://127.0.0.1:8000/api/serv

JavaScript中的设计模式:状态模式

前几天写了一个贪吃蛇小游戏,正好用到了状态模式. 定义 当一个对象内部状态发生改变时候,会导致其行为的改变,这看起来像是改变了对象. 简单的例子 如果一个函数要更具某一个对象的状态来判断该对象应该执行的方法,那么这个函数中会增加很多if判断分支,并且,如果要增加这个对象的一种状态,那么就要在原来的代码中添加一些判断,比较麻烦.例如,贪吃蛇有移动.吃食物.死亡等状态,如果我在处理这些状态的时候这么写代码(如下面) this.process = function(point){ if (this.i

JavaScript中常见的十五种设计模式

在程序设计中有很多实用的设计模式,而其中大部分语言的实现都是基于“类”. 在JavaScript中并没有类这种概念,JS中的函数属于一等对象,在JS中定义一个对象非常简单(var obj = {}),而基于JS中闭包与弱类型等特性,在实现一些设计模式的方式上与众不同. 本文基于<JavaScript设计模式与开发实践>一书,用一些例子总结一下JS常见的设计模式与实现方法.文章略长,自备瓜子板凳~ 设计原则 单一职责原则(SRP) 一个对象或方法只做一件事情.如果一个方法承担了过多的职责,那么在

Javascript 中创建自定义对象的方法(设计模式)

Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. 1 var student = new Object(); 2 student.name = "xiao ming"; 3 student.age = 20; 4 student.getName = function () { 5 alert(this.name); 6 } 熟悉javascrip

【Javascript设计模式】第一课 Javascript中的继承

在Javascript中每个类有三个部分:     1.第一部分是构造函数内,这是供实例化对象复制用的. 2.第二部分是构造函数外,通过点语法添加的,这是供类使用的,实例化对象是访问不到的. 3.第三部分是类的原型中,实例化对象可以通过其原型链间接访问到,也是为供所有实例化对象所共用的. 一. 子类的原型对象 --类式继承 类式继承是最常见最简单的继承模式,类式继承用一句话概括就是"父类实例指向子类原型" /** * 声明一个父类 * @constructor */ var Super

js架构设计模式——理解javascript中的MVVM开发模式

理解javascript中的MVVM开发模式 http://blog.csdn.net/slalx/article/details/7856769 MVVM的全称是Model View ViewModel,这种架构模式最初是由微软的MartinFowler作为微软软件的展现层设计模式的规范提出,它是MVC模式的衍生物,MVVM模式的关注点在能够支持事件驱动的UI开发平台,例如HTML5,[2][3] WindowsPresentation Foundation (WPF), Silverligh