`
JavaSam
  • 浏览: 952062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript设计模式之单例模式

 
阅读更多

顺便讲一下JAVA里边的几种单例模式直接上例子

1.

package com.模式.创建型模式;

/**
 * 饿汉式
 * @author Administrator
 *
 */
public class 单例模式_饿汉式 {

	private static 单例模式_饿汉式 singleton = new 单例模式_饿汉式();//私有静态的本类实例对象
	private 单例模式_饿汉式(){}//私有构造方法,防止其他地方创建对象
	
	public static 单例模式_饿汉式 get单例模式(){
		return singleton;//返回单例模式对象
	}
	
}

 2.

package com.模式.创建型模式;

public class 单例模式_懒汉式 {
	private static 单例模式_懒汉式 singleton ;//私有静态的本类实例对象
	private 单例模式_懒汉式(){}//私有构造方法,防止其他地方创建对象
	
	public static 单例模式_懒汉式 get单例模式_懒汉式(){
		if(singleton == null)singleton = new 单例模式_懒汉式();
		return singleton;
	}
}

 3.

package com.模式.创建型模式;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class 单例模式_多线程访问 {

	private static 单例模式_多线程访问 singleton;

	private 单例模式_多线程访问() {}

	private static Lock lock = new ReentrantLock();// 锁住对象

	
	public static 单例模式_多线程访问 get单例模式_多线程访问() {
		
		lock.lock();
		try {
			if (singleton == null) singleton = new 单例模式_多线程访问();
		} finally  {
			lock.unlock();
		}
		return singleton;
	}

}

 4.

package com.模式.创建型模式;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class 单例模式_双重锁定 {
	private static 单例模式_双重锁定 singleton;
	private 单例模式_双重锁定(){}
	private static Lock lock = new ReentrantLock();//锁住对象
	//避免每次调用都new
	public static 单例模式_双重锁定  get单例模式_双重锁定(){
		
		if (singleton == null) {
			lock.lock();
			try {
				if (singleton == null)
					singleton = new 单例模式_双重锁定();
			} finally {
				lock.unlock();
			}
		}
		return singleton;
		

	}
}

 要讲单例模式就得讲javascript的闭包,因为只有闭包才能是成员变量真正私有化。

 闭包讲解:http://javasam.iteye.com/admin/blogs/1905306

 

 

示例:

SinglentonNamespace.Singleton=(function(){

       var privateAttr = false;//私有属性

       var privateAttr = [0,1,2];

       //私有方法

       function method1(){

            //doSomething;

        }

 

 

        return {

               publicAttr1:true,//没有var关键字

               publicAttr2:10,//注意是逗号

 

               public method1(){

                       var result = method1();

                       return result;

               }

        }

})();

我们可以看到因为我们使用了闭包,在闭包内部我们根本不用this或者直接对象名+.的访问方式。实现了真正的封装。

接下来我们讲讲延迟初始化

java单例模式中都有一个getInstance()这样的类似方法 ,而上面的例子中根本没有这个方法,为了更加像单例模式,接下来我们就加上getInstance()这个方法。为了延迟加载我们必须在刚才的代码基础上再加上一层方法

SinglentonNamespace.Singleton=(function(){

  var singleton; //私有本类实例。

  

  //私有方法,外部不能访问

  function constructor(){

       var privateAttr = false;//私有属性

       var privateAttr = [0,1,2];

       //私有方法

       function method1(){

            //doSomething;

        }

 

 

        return {

               publicAttr1:true,//没有var关键字

               publicAttr2:10,//注意是逗号

 

               public method1(){

                       var result = method1();

                       return result;

               }

        }

     }

   

 

    //重点来了

   return{

       getInstance:function (){

 

            if(!singleton) singleton = constructor();//创建实例+延迟加载

       

            return singleton;

       },

 

   }

})();

 

 

分享到:
评论

相关推荐

    JavaScript设计模式之单例模式.md

    为了帮助大家快速和较好地理解JavaScript设计模式中的单例模式,本文对JavaScript的单例模式进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。

    JavaScript设计模式之单例模式原理与用法实例分析

    本文实例讲述了JavaScript设计模式之单例模式原理与用法。分享给大家供大家参考,具体如下: 单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式是一种常用的模式,有些对象只需要一...

    JavaScript设计模式之单例模式实例

    主要介绍了JavaScript设计模式之单例模式实例,本文用一个实际例子讲解JavaScript中的单例模式,需要的朋友可以参考下

    JavaScript设计模式之单例模式详解

    这一次重温一下《JavaScript设计模式与开发实践》,开篇为单例模式。 /** * pre 单例模式 * 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 * 应用:单例模式是一种常用的模式,有一些对象我们...

    学习JavaScript设计模式之单例模式

    主要为大家介绍了JavaScript设计模式中的单例模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下

    JavaScript设计模式之单例模式简单实例教程

    JavaScript中的单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一实例。这种模式在JavaScript中尤其有用,因为它可以用来限制对象的创建,避免资源的浪费,同时提供一个共享的...

    JavaScript设计模式中的单例模式和观察者模式.docx

    ### JavaScript设计模式详解:单例模式与观察者模式 #### 一、单例模式 **定义**:单例模式是一种常用的软件设计模式,其目的是确保某个类只有一个实例,并且能够提供一个全局访问点来访问该实例。在JavaScript中...

    深入理解JavaScript系列(25):设计模式之单例模式详解

    单例模式是软件开发中一种非常重要的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在JavaScript这样的动态语言中,单例模式的实现方式很多样,而且可以非常灵活。下面,我们就来深入探讨单例模式在...

    JavaScript 设计模式(高清扫描版本)- 张容铭

    JavaScript设计模式是由张容铭编著的一本关于JavaScript编程领域的重要参考书籍,主要探讨了如何在JavaScript编程中应用设计模式来提升代码质量和可维护性。设计模式是软件工程中的最佳实践,它们是针对常见问题的...

    通过javascript实现一个单例模式.rar

    单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在JavaScript中,单例模式通常用于实现全局状态管理、配置管理或实现具有单一职责的对象。 请注意,虽然单例模式在...

    JavaScript设计模式+JavaScript模式+JavaScript异步编程

    1. **JavaScript设计模式**: 设计模式是软件工程中经过实践验证的、解决常见问题的有效方法。在JavaScript中,常见的设计模式包括: - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 工厂模式:创建...

    javascript设计模式 – 单例模式原理与应用实例分析

    本文实例讲述了javascript设计模式 – 单例模式。分享给大家供大家参考,具体如下: 介绍:单例模式是结构最简单的设计模式。单例模式用于创建那些在软件系统中独一无二的对象,是一个简单但很实用的设计模式。 定义...

    学用JavaScript设计模式

    书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...

    JS 设计模式之:单例模式定义与实现方法浅析

    本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下: 良好的设计模式可以显著提高代码的可读性,降低复杂度和维护成本。笔者打算通过几篇文章通俗地讲一讲常见的或者实用的设计...

    JavaScript设计模式—单例模式详解【四种基本形式】

    本文实例讲述了JavaScript设计模式—单例模式.分享给大家供大家参考,具体如下: 单例模式也称为单体模式,其中: 1,单体模式用于创建命名空间,将系列关联的属性和方法组织成一个逻辑单元,减少全局变量。  逻辑...

Global site tag (gtag.js) - Google Analytics