一、单例模式是Java中一种常见的设计模式。
二、单例模式的特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
三、单例模式的三种写法。
1、第一种:饿汉式,线程安全,多个线程时能保证只有一个实例。
/**
* 饿汉式(线程安全)
* @author xieke
*
*/
public class Person {
private static final Person person = new Person();
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//构造函数私有化
private Person() {
}
//提供一个全局的静态方法
public static Person getPerson() {
return person;
}
}
2、第二种:懒汉式,线程不安全,多线程时不能保证只有一个实例。
/**
* 懒汉式(线程不安全,多线程时不能保证只有一个实例)
* @author xieke
*
*/
public class Person2 {
private String name;
private static Person2 person;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//构造函数私有化
private Person2() {
}
//提供一个全局的静态方法
public static Person2 getPerson() {
if(person == null) {
person = new Person2();
}
return person;
}
}
3、双重检查,线程安全,多个线程时能保证只有一个实例。
/**
* 双重检查
* @author xieke
*
*/
public class Person4 {
private String name;
private static Person4 person;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//构造函数私有化
private Person4() {
}
//提供一个全局的静态方法
public static Person4 getPerson() {
if(person == null) {
synchronized (Person4.class) {
if(person == null) {
person = new Person4();
}
}
}
return person;
}
}
转载请注明出处: http://xieke90.iteye.com/blog/2235643