单例模式
可以分为两种:饿汉式和懒汉式两种,饿汉是在系统启动的一开始就初始化好了实例,而懒汉式是在第一次访问的时候才初始化实例。
饿汉模式
package org.lltse.pattern.singleton;
/**
* @author lltse
* @date 2014-3-13
* @ask 饿汉模式
* @answer
*/
public class HungerSingleton
{
/**
* 一开始就初始化好了实例
*/
private static HungerSingleton instance = new HungerSingleton();
private HungerSingleton()
{
}
public static HungerSingleton getInstance()
{
return instance;
}
}
懒汉模式
package org.lltse.pattern.singleton;
/**
*
* @author lltse
* @date 2014-3-13上午11:41:22
* @ask 懒汉模式
* @answer
*/
public class LazySingleton
{
private static LazySingleton instance = null;
private LazySingleton()
{
}
public static synchronized LazySingleton getInstance()
{
if(instance == null)
{
instance = new LazySingleton();
}
return instance;
}
}
多线程环境下的懒汉单例模式
package org.lltse.pattern.singleton;
/**
* @author lltse
* @ask 既满足懒汉模式,又满足只有一个实例,即使多线程环境也是一个实例。
*/
public class Singleton
{
static class SingletonHolder
{
static Singleton instance = new Singleton();
}
public static Singleton getInstance()
{
return SingletonHolder.instance;
}
}