单例模式
单例模式也是归属于创建型模式
定义
- 实例类确保只有一个实例对象。
- 提供一个全局的访问方法
- 自行实例化
- 构造方法私有
角色
singleton
分类
- 饿汉式
package per.jbz.singleton;
/**
* 饿汉式
* @author Coding_Jbz
*
*/
public class Person {
public static final Person person = new Person();
private Person(){ //私有构造
}
//提供全局的方法
public static Person getPerson(){
return person;
}
}
- 懒汉式
/**
* 懒汉式
* @author Coding_Jbz
*
*/
public class Person2 {
public static Person2 person ;
private Person2(){ //私有构造
}
//提供全局的方法
public static synchronized Person2 getPerson(){
if(null==person){
return person = new Person2();
}
return person;
}
}
- 双向检测
package per.jbz.singleton;
/**
* 双重检测--懒汉式同步问题造成
* @author Coding_Jbz
*
*/
public class Person3 {
public static Person3 person ;
private Person3(){ //私有构造
}
//提供全局的方法
public static Person3 getPerson(){
if(null==person){
synchronized (Person3.class) {
if(person==null){
person = new Person3();
}
}
}
return person;
}
}