①最简单的模式
package org.fanzone.design.singleton;
/**
* Title: base<br>
* Description: Simple Mode<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jun 23, 2011 8:23:51 PM <br>
* @author wangmeng
*/
public class SimpleMode {
private static final SimpleMode mode = new SimpleMode();
private SimpleMode(){}
public static SimpleMode getInstance(){
return mode;
}
}
②延迟加载模式
package org.mars.design.singleton;
/**
* Title: base<br>
* Description: Lazy-loaded Mode<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jun 23, 2011 8:03:18 PM <br>
* @author wangmeng
*/
public class LazyLoadedMode {
private static LazyLoadedMode mode = null;
private LazyLoadedMode(){}
public static LazyLoadedMode getInstance(){
if(null == mode){
mode = new LazyLoadedMode();
}
return mode;
}
}
③同步模式
package org.mars.design.singleton;
/**
* Title: base<br>
* Description: Synchronized Mode<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jun 23, 2011 8:28:33 PM <br>
* @author wangmeng
*/
public class SynchronizedMode {
private static SynchronizedMode mode = null;
private SynchronizedMode(){}
public static synchronized SynchronizedMode getInstance(){
if(null == mode){
mode = new SynchronizedMode();
}
return mode;
}
}
④双向检查加锁模式
package org.mars.design.singleton;
/**
* Title: base<br>
* Description: Double-checked Locking Mode<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jun 23, 2011 8:33:01 PM <br>
* @author wangmeng
*/
public class DoubleCheckedLockingMode {
/***
* #Attentions#: Be volatile modified write the variables are not and the reading and writing code before adjustment,
* read the variables are not and lagging behind the reading and writing code adjusted.
*/
private static volatile DoubleCheckedLockingMode mode = null;
private DoubleCheckedLockingMode(){}
public static DoubleCheckedLockingMode getInstance(){
if(null == mode){
synchronized(DoubleCheckedLockingMode.class){
if(null == mode){
mode = new DoubleCheckedLockingMode();
}
}
}
return mode;
}
}
⑤静态内部类模式
package org.mars.design.singleton;
/**
* Title: base<br>
* Description: Static Inner-class Mode<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jun 23, 2011 8:53:27 PM <br>
* @author wangmeng
*/
public class StaticInnerclassMode {
private static class StaticInnerclassModeFactory{
private static final StaticInnerclassMode mode = new StaticInnerclassMode();
}
public static StaticInnerclassMode getInstance(){
return StaticInnerclassModeFactory.mode;
}
private StaticInnerclassMode(){}
}