单例模式:是保证一个类仅有一个实例,并提供一个访问它的全局访问点
概述:保证一个类在内存中只有一个实例
作用:节省内存(只有一个实例)
单例模式要点包括:
- 某个类只能有一个实例
- 它必须自行创建这个实例(构造方法必须私有)
- 必须自行向整个系统提供这个实例
单例模式实现方式为:
- 拥有一个私有构造方法
- 提供一个自身静态私有的变量
- 提供一个公有的静态方法
使用场景:
- 不要在单例模式的类中定义成员变量(静态不管)就算定义也不要修改其值
- 一个类中没有属性只有方法(所有人都可以调用)就可以使用单例
两种单例模式:
懒汉式:调用方法(全局访问点)时才实例化
饿汉式:类加载就完成实例化(常用)
示例--------:
懒汉式:
// 懒汉式单例模式是 调用公有的静态方法时 才实例化
public class Abc {
//私有的构造方法
private Abc(){
System.out.println("懒汉式构造方法");
}
// 静态的自身的私有变量
private static Abc abc;//用于存放 实例化的对象
// 全局访问点,,,,因为是静态所有全局共享 通过类名即可访问
public static Abc getInstance(){
if(abc==null){ //判断是否已存在实例
abc=new Abc();//实例化
}
return abc;// 若已存在就直接返回这个实例
}
}
饿汉式:
-----------------------饿汉式单例实例
public class Bcd {
// 私有的构造器
private Bcd(){
System.out.println("调用了一次饿汉式构造器");
}
// 静态的自身的私有的变量idu
private static Bcd b=new Bcd();//饿汉式是类加载时就实例化
//公开的静态方法
public static Bcd getInstance(){
return b;
}
}
单例模式内存简析: