设计模式
一、单例模式
1.饿汉式
public class Person {
//类加载就创建实例,加上final关键字,防止重复创建
private static final Person instance = new Person();
//私有化构造器,保证外部无法创建实例。
private Person() {
System.out.println("对象创建了");
}
//获取实例的方法
public static Person getInstance() {
return instance;
}
}
2.枚举饿汉式
// enum 本身也是一个Class类
public enum Person {
//定义一个枚举的元素,它就代表了Singleton的一个实例。
INSTANCE;
//对外部提供调用方法:将创建的对象返回,只能通过类来调用
public Person getInstance(){
return INSTANCE;
}
}
3.懒汉式
public class Person {
//保证一个类只有一个用于返回的对象
private static Person instance;
//私有化构造器,保证外部无法创建实例。
private Person(){
System.out.println("对象创建了");
}
//创建实例
public static Person getInstance(){
//如果instance为空则新 new 一个对象
if(instance==null){
instance = new Person();
}
//如果不为空,则直接返回
return instance;
}
}
4.DCL懒汉式
public class Person {
//保证一个类只有一个用于返回的对象
private static volatile Person instance;//volatile解决可见性,有序性
//私有化构造器,保证外部无法创建实例。
private Person(){
System.out.println("对象创建了");
}
//创建实例
public static Person getInstance(){
//如果instance为空则新 new 一个对象
if(instance==null){
synchronized(Person.class){
if(instance==null){
instance = new Person();
}
}
}
//如果不为空,则直接返回
return instance;
}
}
5.内部类懒汉式
public class Person {
//私有化构造器,保证外部无法创建实例。
private Person(){
System.out.println("对象创建了");
}
private static class Holder{
static Person INSTANCE = new Person();
}
//创建实例
public static Person getInstance(){
return Holder.INSTANCE;
}
}
持续更新.............