单例就是唯一的意思。
第一种单例实现方式(在多线程环境中存在不安全因素)
SingletonPattern.java代码如下:
第二种单例实现方式(多线程环境中安全)
SingletonPattern2.java代码如下:
第一种单例实现方式(在多线程环境中存在不安全因素)
SingletonPattern.java代码如下:
package com.designPattern.singleton;
/**
* 单例模式的第一种实现方式
* @author yangjianzhou
*
*/
public class SingletonPattern {
private static SingletonPattern singletonPattern = null;
/**
* 将构造函数的修饰符设置为private的目的就是不能直接产生一个实例
*/
private SingletonPattern(){
}
/**
* 在多线程的环境中,这里会不安全
* @return
*/
public SingletonPattern getInstance(){
if(this.singletonPattern==null){
this.singletonPattern = new SingletonPattern();
}
return this.singletonPattern;
}
}
第二种单例实现方式(多线程环境中安全)
SingletonPattern2.java代码如下:
package com.designPattern.singleton;
/**
* 单例模式的第一种实现方式
* @author yangjianzhou
*
*/
public class SingletonPattern2 {
private static final SingletonPattern2 singletonPattern = new SingletonPattern2();
/**
* 将构造函数的修饰符设置为private的目的就是不能直接产生一个实例
*/
private SingletonPattern2(){
}
/**
* 在多线程的环境中,这里会不安全
* @return
*/
public synchronized SingletonPattern2 getInstance(){
return this.singletonPattern;
}
}