Singleton 懒汉式
单例模式 --- 懒汉模式
class Singleton { //1.将构造方法私有化,使外部无法直接创建对象 private Singleton() { } //2.创建类的唯一实例 private static Singleton instance; //3.提供获取实例的方法 public static Singleton getInstance() { if(instance==null){ instance = new Singleton(); } return instance; } }
特点:在第一次调用时,实例化对象。(特点加载类较快,调用较慢)
//单例模式:懒汉模式
public class Singleton2{
//1、将构造方式私有化,不允许外边直接创建对象
private Singleton2(){}
//2、创建类的唯一实例,使用private static修饰
private static Singleton2 instance;
//3、提供一个用于获取实例的方法,使用public static修饰
public static Singleton2 getInstance(){
if(instance==null)
{
instance=new Singleton2();
}
return instance;
}
}
public class Test{
public static void main(String[] args)
{
Singleton s1=Singleton2.getInstance();
Singleton s2=Singleton2.getInstance();
if(s1==s2)
{
System.out.println("s1和s2是同一个实例");
}else{
System.out.println("s1和s2不是同一个实例");
}
}
}
1、单例模式,懒汉模式:与饿汉不同的是在创建唯一实例时不new初始化 2、懒汉模式: a.将构造函数私有化 b.声明类的唯一实例,并且私有化 c.提供一个static修饰的方法获取当前类所创建的唯一的类实例。 3、理解懒汉:在加载类的时候,只是声明一个引用,并没有实例化。只有第一次调用共有方法时才实例化。形象:不急切的,慵懒的
此处仅作声明未进行实例化,即当类被加载时并未创建该唯一实例,而是当用户获取该实例时进行判断为空后,才创建实例,此后再有其他用户获取时,就不进行创建了,因为在判断时不为空即实例已存在,直接返回第一次创建好的实例
进行测试!
创建实例 第15行
当用户获取类的实例时,先进行一个判断第15行代码,
若为空,则创建该实例第16行代码,
若不空,则直接返回该实例第18行代码。
懒汉模式
11行代码处仅仅被声明而未被实例化,若用户通过getInstance方法获取该实例时,明显为空,如何处理呢?
(看下条笔记)
单例模式 懒汉模式
单例模式: 懒汉模式
1, 将构造方法私有化, 不允许外部直接创建对象
2, 声明类的唯一 实例, 使用private static 修饰
3, 提供一个用于获取实例的方法, 使用public static修饰
@设计模式---单例模式之 懒汉模式
1.将构造方法私有化,不允许外边直接创建对象
private Singleton2(){}
2.声明 类的唯一实例,使用private static修饰
private static Singleton2 instance;
3.提供一个用于获取实例的方法,使用public static修饰
public static Singleton2 getInstance(){ if(instance==null){ instance=new Singleton2(); } return instance; }
懒汉式单例模式
判断是否为空,如果不为空才创建实例,比较懒所有称作懒汉模式
单例模式中的懒汉模式