顺便讲一下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设计模式中的单例模式,本文对JavaScript的单例模式进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。
本文实例讲述了JavaScript设计模式之单例模式原理与用法。分享给大家供大家参考,具体如下: 单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式是一种常用的模式,有些对象只需要一...
主要介绍了JavaScript设计模式之单例模式实例,本文用一个实际例子讲解JavaScript中的单例模式,需要的朋友可以参考下
这一次重温一下《JavaScript设计模式与开发实践》,开篇为单例模式。 /** * pre 单例模式 * 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 * 应用:单例模式是一种常用的模式,有一些对象我们...
主要为大家介绍了JavaScript设计模式中的单例模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下
JavaScript中的单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一实例。这种模式在JavaScript中尤其有用,因为它可以用来限制对象的创建,避免资源的浪费,同时提供一个共享的...
### JavaScript设计模式详解:单例模式与观察者模式 #### 一、单例模式 **定义**:单例模式是一种常用的软件设计模式,其目的是确保某个类只有一个实例,并且能够提供一个全局访问点来访问该实例。在JavaScript中...
单例模式是软件开发中一种非常重要的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在JavaScript这样的动态语言中,单例模式的实现方式很多样,而且可以非常灵活。下面,我们就来深入探讨单例模式在...
JavaScript设计模式是由张容铭编著的一本关于JavaScript编程领域的重要参考书籍,主要探讨了如何在JavaScript编程中应用设计模式来提升代码质量和可维护性。设计模式是软件工程中的最佳实践,它们是针对常见问题的...
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在JavaScript中,单例模式通常用于实现全局状态管理、配置管理或实现具有单一职责的对象。 请注意,虽然单例模式在...
1. **JavaScript设计模式**: 设计模式是软件工程中经过实践验证的、解决常见问题的有效方法。在JavaScript中,常见的设计模式包括: - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 工厂模式:创建...
本文实例讲述了javascript设计模式 – 单例模式。分享给大家供大家参考,具体如下: 介绍:单例模式是结构最简单的设计模式。单例模式用于创建那些在软件系统中独一无二的对象,是一个简单但很实用的设计模式。 定义...
书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...
本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下: 良好的设计模式可以显著提高代码的可读性,降低复杂度和维护成本。笔者打算通过几篇文章通俗地讲一讲常见的或者实用的设计...
本文实例讲述了JavaScript设计模式—单例模式.分享给大家供大家参考,具体如下: 单例模式也称为单体模式,其中: 1,单体模式用于创建命名空间,将系列关联的属性和方法组织成一个逻辑单元,减少全局变量。 逻辑...