zoukankan      html  css  js  c++  java
  • JavaScript 单例模式

    下班之前,给大家简单的讲述一下JavaScript最实用的设计模式用法---单例模式

    单例模式 

    意思就是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 。 

    两种实现方式: 懒汉单例模式和饿汉式单例模式。

    关键点:

    1)一个类只有一个实例 。

    2)它必须自行创建这个实例。

    3)它必须自行向整个系统提供这个实例 。

    先说Java单例模式是怎样实现的,

    1.  懒汉单例模式(类加载时不初始化

     

     1 /**
    2 *
    3 * 文件名:Singleton.java
    4 * 创建作者: 李航杰
    5 * 创建日期:2012-2-22 上午下午06:47:25
    6 */
    7 public class Singleton {
    8
    9 //懒汉式单例模式
    10 //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
    11 private static Singleton instance=null;
    12 private Singleton(){
    13 //私有构造函数,防止外界初始化该对象
    14 }
    15 //静态,同步,公开访问点
    16 public static synchronized Singleton getInstance(){
    17 if(instance==null){
    18 instance=new Singleton();
    19 }
    20 return instance;
    21 }
    22 }

    2.饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

     1 /**
    2 *
    3 * 文件名:Singleton.java
    4 * 创建作者: 李航杰
    5 * 创建日期:2012-2-22 上午下午06:48:25
    6 */
    7 public class Singleton {
    8
    9 ////静态私有成员,已初始化
    10 private static Singleton instance=new Singleton();
    11 private Singleton(){
    12 //私有构造函数,防止外界初始化该对象
    13 }
    14 //静态,不用同步(类加载时已初始化,不会有多线程的问题)
    15 public static Singleton getInstance(){
    16
    17 return instance;
    18 }
    19 }


    备注:优缺点已经详细注释了,废话不多说,赶下说一下JS的单例模式

    /*

    因为我们需要访问该类本身,比如可能有时候需要做 instanceof 判断等等。
     实现单例很简单,只需在构造方法的内部对caller做一些限制就可以了,单例模式的最终目的不是不让new对象,而是只允许存在一个对象实例。
    */ 

     将自己前阵子,写好游戏框架中,封装的导演类代码贴出来,如下代码

     1 /**
    2 * 创建一个单例导演类
    3 *@author : LeeHonGee
    4 * Create DateTime: 2012-1-13 上午11:40:52
    5 *
    6 */
    7 function Director(){
    8 Director.instance=this;
    9
    10 }
    11 Director.getInstance=function(){
    12 var instance;
    13 if(Director.instance==null){
    14 instance=new Director();
    15 }else{
    16 instance=Director.instance;
    17 }
    18 return instance;
    19 }

    好,大功告成,下班回去咯,保佑现在的公车不挤了,哈哈....

     创建者:LeeHonGee     创建时间:2012-02-22     下午19:10

  • 相关阅读:
    Mysql多实例
    nginx不间断服务平滑升级
    源码编译安装mysql
    nginx优化后的主配置文件
    Nginx安装与应用
    Android 7 修改启动动画和开机声音
    Android 7 默认声音/大小修改
    高通与At指令:ATFWD解析
    高通与At指令:AtCop解析
    高通与At指令:基础概念
  • 原文地址:https://www.cnblogs.com/leehongee/p/2363659.html
Copyright © 2011-2022 走看看