Singleton 模式的宗旨在于确保某个类只有一个实例,别且为之提供一个全局访问点。
为了防止其他工作人员实例化我们的类,可以为该类创建唯一一个构造器,并将构造器的可见
设置为私有。值得注意的是,如果我们创建了其他的非私有的构造器,或者根本没有为该类提
供构造器,那么其他人员还是能实例化我们的类。
如果不希望提前创建单例对象,我们可以等到第一次使用该单例对象的时候在创建它,即
滞后初始化。滞后初始化单例对象有两个理由:
1.也许在静态初始化时间,你没有关于如何初始化单例对象的足够信息。
2.选择滞后初始化单例的目的也许为了等待资源,诸如数据库连接,尤其是在某些特定会话中
不需要这个单例的应用程序中。
如果在多线程环境中对单例采用滞后初始化,那么我们必须小心防止多个线程同时初始化该
单例。Singleton 有以下形式:
1.不支持多线程:
public class Singleton {
//** * 单线程 开始
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
instance=new Singleton();
}
return instance;
}
// ** * 单线程 结束
}
2.支持多线程:
public class Singleton {
// ** * 多线程 开始
private static Singleton instance = null;
private static Object classlock = Singleton.class;
private Singleton() {
}
public static Singleton getInstance() {
synchronized (classlock) {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
// ** * 多线程 结束
简便方式:
public class Singleton {
// ** * 多线程 开始
private static Singleton instance = null;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
// ** * 多线程 结束
}
分享到:
相关推荐
java Singleton单例模式 java Singleton单例模式
singleton单例模式1
单例模式 Singleton 单例模式线程安全问题和拓展
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
Android Singleton单例模式运用详解
c++ singleton单例模式
本文档,是利用C++来实现设计模式中的,单例模式,里面有内容说明和相关实例代码介绍
C# 23种设计模式之单例模式源码
单例模式的实现,创建,一个文档作为简介
主要介绍了使用设计模式中的Singleton单例模式来开发iOS应用程序的例子,示例代码为传统的Objective-C语言,需要的朋友可以参考下
NULL 博文链接:https://walson.iteye.com/blog/392190
在Java应用中,单例对象能保证在一个...3、有些像交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了,只有使用单例模式,才能保证核心交易服务器独立控制整个流程。 CSDN代码的详细解释。
Singleton pattern单例模式应用
设计模式C++学习之单例模式(Singleton)
单例模式,您能写出几个呢?这个PPT将为你全面阐述5种不同形式的单例模式。
使用"懒汉模式"与"饿汉模式"实现c++的单例模式,并且确保了单例模式的第一次实例化的线程安全,以及程序结束时,单例对象的资源收回,以防内存资源的泄漏
NULL 博文链接:https://linxingliang.iteye.com/blog/1217811
单例模式(Singleton)的6种实现
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
单例模式是最简单的一种设计模式,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例, 本资源提供了用java语言实现简单的单例模式,供初学者参考