目录
设计模式概念
设计模式:经验的总结,大量业务开发实践中,针对某些需求,总结的一套开发经验。比如程序运行时,希望内存中只存在一个对象的实例(或考虑用于共享数据,或考虑实例多了浪费空间),针对这样的需求如何做到呢?经长期实践总结,有以下方式可以轻松做到,记住了这种设计模式也就可以轻松完成这个需求,不需要再从头思考各种细节问题来完成。
🍐单例设计模式
单例: 也就是一个类中只能有一个实例。分为
懒汉式
和饿汉式
懒汉式: 是延迟加载的方式,只有使用的时候才会加载
饿汉式: 加载的时候就创建好对象了, 是立即加载的方式
使用场景: 看业务需求,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式
,否则就使用懒汉式
一.单例设计模式---懒汉式
🚀是延迟加载的方式,只有使用的时候才会加载。 使用懒汉式,在启动的时候,会感觉到比饿汉式略快,因为并没有做对象的实例化。 但是在第一次调用的时候,会进行实例化操作,感觉上就略慢。
方式一:懒汉式
public class Single01 {
private static Single01 single01 = null;
/*
构造器私有化
*/
private Single01(){
}
/**
* 外部访问接口
* @return
*/
public static Single01 getInstance() {
if (single01 == null) {
single01 = new Single01();
}
return single01;
}
}
方式二:懒汉式
public class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance == null){
synchronized (Singleton.class) {
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
二.单例设计模式---饿汉式
🚀加载的时候就创建好对象了, 是立即加载的方式,无论是否会用到这个对象,都会加载。
方式一:饿汉式
public class Single02 {
private static final Single02 single02 = new Single02();
/**
* 私有构造器
*/
private Single02(){
}
/**
* 外部访问接口
* @return
*/
public static Single02 getInstance() {
return single02;
}
}
方式二:饿汉式
public class Singleton {
public static final Singleton INSTANCE = new Singleton();
private Singleton(){
}
}
方式三:饿汉式
public enum Singleton {
INSTANCE
}