设计模式笔记——Singleton
单例模式Singleton
构造函数定义为private的作用是阻止类在外部被实例化。
定义显式构造函数则默认的构造函数会失效。
保证一个类仅有一个实例,并提供一个访问它的全局访问点。(定义一个静态方法)
package singleton.pattern;
public class Singleton {
private static Singleton instance;
/**
* 私有化构造函数
*/
private Singleton() {
}
/**
* 单线程下的单例
*
* @return
*/
public static Singleton GetInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
/**
* 线程锁
*/
private static Object lock = new Object();
/**
* 多线程单例,要加锁
*
* @return
*/
public static Singleton GetInstance1() {
synchronized (lock) {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
/**
* 多线程单例,双重锁定,避免了GetInstance1()方法中进入方法都判断加锁的弊端
*
* @return
*/
public static Singleton GetInstance2() {
if (instance == null) {
synchronized (lock) {
if (instance == null) {
// 注意要再判断一次,防止一个线程执行完后释放
// 了锁定又构造了一个实例
instance = new Singleton();
}
}
}
return instance;
}
private final static Singleton instance1=new Singleton();
/**
* 获取已经实例化的instance1
* @return
*/
public static Singleton GetInstance3(){
return instance1;
}
}

浙公网安备 33010602011771号