单例设计模式
饿汉式懒汉式的调用方法,给个加注释的例子,写了亲
------解决方案--------------------http://www.iteye.com/topic/1121918
------解决方案--------------------public class Singleton{
private static Singleton{};
private static Singleton st=new Singleton();
public static Singleton get(){
return st;
}
------解决方案--------------------懒汉式
public class LazySingleton {
private static LazySingleton instance = null;
private LazySingleton(){};
public static synchronized LazySingleton getInstance(){
if(instance==null){
instance = new LazySingleton();
}
return instance;
}
}
饿汉式
public class EagerSingleton {
private static EagerSingleton instance = new EagerSingleton();
private EagerSingleton(){};
public static EagerSingleton getInstance(){
return instance;
}
}
------解决方案--------------------这两种方式调用的时候是一样的,就只有初始化的时间不一样。
前一种是在定义这个对象的时候就初始化,也就是类加载的时候。
后一种是在调用这个方法的时候才初始化。
上面例子很清晰了。
------解决方案--------------------利用JAVA加载静态内部类的原理,实现懒汉加载,不需要同步
public class TestObject{
private TestObject(){}
public static TestObject instance(){
return InnerSingletonHandler.getSingleton();
}
private static class InnerSingletonHandler{
private static TestObject singleton = new TestObject();
private InnerSingletonHandler(){}
private static TestObject getSingleton(){
return singleton;
}
}
}
------解决方案--------------------
package com.javapatterns.singleton;
/**
* 饿汉式单例类
*
*/
public class EagerSingleton {
private static final EagerSingleton m_instance = new EagerSingleton();
/**
* 私有的构造方法
*/
private EagerSingleton(){
}
/**
* 功能:静态工厂方法
* @return EagerSingleton