Singleton 单列模式在实际应用的机会很多。
最近刚好碰到,所以顺便总结了下。
一、最常见的实现如下:(不支持多线程)
public class Singleton
{
private static Singleton singleton=null;
private Singleton(){}
public static Singleton instance()
{
if(singleton==null)
singleton = new Singleton();
return singleton
return singleton;
}
}
二、如果要在多线程环境下使用,那么可以用:
public class Singleton
{
private volatile static Singleton singleton=null;
private Singleton(){}
public static Singleton getInstance()
{
if(singleton==null)
{
synchronized(Singleton.class)
{
if(singleton==null)
{
singleton=new Singleton();
}
}
}
return singleton;
}
}
该实现,有另外实现方式:
public class Singleton
{
private static Singleton singleton = new Singleton();
private Singleton();
public static Singleton getInstance()
{
return singleton;
}
}
三、The solution of Bill Pugh,直接拷贝来的。
public class Singleton {
// Private constructor prevents instantiation from other classes
private Singleton() {}
/**
* SingletonHolder is loaded on the first execution of Singleton.getInstance()
* or the first access to SingletonHolder.INSTANCE, not before.
*/
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
建议大家使用第三种。
分享到:
相关推荐
java singleton 不解释不解释不解释不解释
java Singleton单例模式 java Singleton单例模式
Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)
Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接实例化它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance()...
Java的Singleton模式代码(免资源分),你会发现Java的Singleton模式真的很有趣,原来程序还可以这样写。
简单的单例模式举例Singleton 分为恶汉式 懒汉式
C++完美实现Singleton模式
单例模式是最简单的一种设计模式,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例, 本资源提供了用java语言实现简单的单例模式,供初学者参考
用VC实现的singleton 模式 在VS03,VC6.0下编译通过
c++ singleton单例模式
用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...
单例模式,Singleton两种代码实现。一般实现方法,泛型实现方法(推荐)
单例模式 Singleton 单例模式线程安全问题和拓展
Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现
Android Singleton单例模式运用详解
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
Factory模式,Prototype模式,Builder 模式,Singleton模式,Facade模式,Proxy模式,Adapter模式,Composite模式,Decorator模式....
singleton单例模式1
java设计模式,单例模式的不同实现方式