入门设计模式——单例模式

参考文章:

http://www.cnblogs.com/TomXu/archive/2012/02/20/2352817.html



单例模式:保证一个类只有一个实例,实现方法是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,确保一个类只有一个实例对象。

在javascript里,单例作为一个命名空间提供者,从全局命名空间里提供了一个唯一的访问点来访问该对象。

自我感受:单例模式是在内部实例化了一次对象A,然后返回这个实例instance,所以在外部再new一个对象A的时候,得到的就是这个对象A的实例instance;

相当于将所有在外部实例化A的对象的都是instance的引用; 对的,就是引用,指针指向同一个内存区域,所以不管是instance ,还是通过new A()new出来的对象a,b,c,d....它们中任意一个,做出任何改变,都会影响其他人,因为它们共用一个内存区域嘛!!

可以把外部new出来的对象,其实可以看成是一个人,只是用的不同的名字而已啦!

接下来就来阐释一下单例模式的实现方法:

(1)最简单的方法:对象字面量的方法

var Singleton = (function () {    var instantiated;    function init() {        /*这里定义单例代码*/        return {            publicMethod: function () {                console.log(‘hello world‘);            },            publicProperty: ‘test‘        };    }

    return {        getInstance: function () {            if (!instantiated) {      //确保只有一个实例                instantiated = init();  //使用init方法,是使publicMethod和publicP                        roperty只在要使用的时候才初始化;            }            return instantiated;        }    };})();

/*调用公有的方法来获取实例:*/Singleton.getInstance().publicMethod();

(2)方法二:

function Universe() {

    // 判断是否存在实例
    if (typeof Universe.instance === ‘object‘) {
        return Universe.instance;
    }

    // 其它内容
    this.start_time = 0;
    this.bang = "Big";

    // 缓存
    Universe.instance = this;

    // 隐式返回this
}
时间: 2024-08-29 07:27:00

入门设计模式——单例模式的相关文章

入门设计模式之单例

学习更多设计模式请参考:入门设计模式之汇总篇 了解单例模式之前我们先来了解一下单例模式的三个要点: 1.一个类只能有一个实例(就是只需要new一次呗) 2.它必须自行创建这个实例(就是构造方法不对外暴露呗) 3.它必须向整个系统提供这个实例(就是获取实例的方法是静态的呗) 其实通过分析上方三个要点我们就已经了解了单例模式了.也就是说我们只要满足上方的要求就算是一个单例了. 按照上方的要点这里给出几个例子供大家参考一下: 饿汉式: public class HungrySingle { priva

php设计模式——单例模式(Singleton)

二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 谷歌的Android设备 华为的Android设备 IOS只属于苹果公司 IOS只属于苹果公司 1 <?php 2 3 /* 4 * php

Android 设计模式-单例模式

Android 设计模式-单例模式 什么情况下需要单例模式? 一些类提供公共功能供别人调用,本身不会处理业务逻辑 类会被许多类和线程调用 设计单例模式 public class Singleton{ private static Singleton mSingleton; private Singleton(){ } public static Singleton getInstance(){ if(mSingleton == null){ mSingleton = new Singleton(

设计模式--单例模式(学习笔记)

定义:      单例模式:保证一个类只有一个实例,并且提供一个访问它的全局访问点.(<大话设计模式定义>): 单例模式分为两种: 1>饿汉式单例类:自己被加载时就将自己实例化. 例子:       private SingleExample() {           } private static SingleExample singleExample=new SingleExample(); @Override protected SingleExample getInstanc

简易的设计模式——单例模式

定义 单例模式是一种保证一个类中只有一个实例对象的软件设计模式.它需要确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 这个还是比较好理解的,一个国家只能有一个国王,不可以出现第二个,所有的人都只能来膜拜这个伟大的国王. 下面直接上代码. 实现 国王类 public class King { //确保只有一个国王 private static final King king=new King(); //保证不再产生新的国王了 private King(){} //这个国家的人通过

Java设计模式の单例模式

-------------------------------------------------- 目录 1.定义 2.常见的集中单例实现 a.饿汉式,线程安全 但效率比较低 b.单例模式的实现:饱汉式,非线程安全 c.饱汉式,线程安全简单实现 d.线程安全 并且效率高  单例模式最优方案 3.总结 a.使用枚举的单例模式 b.使用枚举,static处调用,初始化一次 -------------------------------------------------- 1.定义 确保一个类只有

c#设计模式-单例模式(面试题)

c#设计模式-单例模式 单例模式三种写法: 第一种最简单,但没有考虑线程安全,在多线程时可能会出问题, public class Singleton { private static Singleton _instance = null; private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { _instance = new Singleton(); } return _in

设计模式--单例模式之Lock

1.为什么用Lock及关键知识 当我们使用线程的时候,效率最高的方式当然是异步,即个个线程同时运行,其间互不依赖和等待.当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被同一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性.lock是C#中最常用的同步方式,格式为lock(objectA){codeB} . lock(objectA){codeB}表示意义: 1. objectA被lock了吗?没有则由我来

c#设计模式-单例模式【转】

单例模式三种写法: 第一种最简单,但没有考虑线程安全,在多线程时可能会出问题 public class Singleton { private static Singleton _instance = null; private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { _instance = new Singleton(); } return _instance; } } 第