java单例模式[附代码实现] java单例模式
1、什么是单例模式
1.1、介绍
1. 所谓的单例模式就是指⼀个类在整个应⽤程序中只能出现⼀个对象实例
2. 单例的实现⽅法有两种
1. 饿汉式
2. 懒汉式
1.2、如何实现单例模式
实现单例模式⼤致可分为三个步骤
1. 私有化构造器 ===>防⽌被new
2. 在类内部创建对象
3. 对外暴露⼀个静态⽅法.⽤于获取对象⽰例
2、饿汉式
public class SingletonPattern {
public static void main(String[] args){
//测试饿汉模式
EagerSingleton EagerSingleton();
单例模式的几种实现方式EagerSingleton EagerSingleton();
//因为类没有重写toString⽅法所以会打印地址值
System.out.println("eagerSingleton01:"+eagerSingleton01);
System.out.println("eagerSingleton02:"+eagerSingleton02);
//        结果:
/
/        eagerSingleton01:EagerSingleton@1b6d3586
//        eagerSingleton02:EagerSingleton@1b6d3586
}
}
//步骤[单例模式-饿汉式]
//1. 将构造器私有化
//2. 在类的内部直接创建对象(该对象是 static)
//3. 提供⼀个公共的 static ⽅法,返回对象
class EagerSingleton{
private static EagerSingleton eagerSingleton=new EagerSingleton();
public static EagerSingleton getEagerSingleton(){
return eagerSingleton;
}
}
3、懒汉式
public class SingletonPattern {
public static void main(String[] args){
//测试饿汉模式
LazySingleton LazySingleton();
LazySingleton LazySingleton();
//因为类没有重写toString⽅法所以会打印地址值
System.out.println("lazySingleton01:"+lazySingleton01);
System.out.println("lazySingleton02:"+lazySingleton02);
//        结果:
//        lazySingleton01:LazySingleton@1b6d3586
//        lazySingleton02:LazySingleton@1b6d3586
}
}
//步驟[单例模式-懒汉式]
//1.构造器私有化
//2.定义⼀个static的对象
//3.提供⼀个 public 的 static ⽅法,可以返回⼀个懒汉式对象
//4.懒汉式,只有当⽤⼾使⽤ getInstance 时,才返回对象, 后⾯再次调⽤,会返回上次创建的对象
class LazySingleton{
private static LazySingleton lazySingleton;
public static LazySingleton getLazySingleton(){
if(lazySingleton==null){
lazySingleton=new LazySingleton();
}
return lazySingleton;
}
}
4、饿汉式 VS 懒汉式
1. ⼆者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,⽽懒汉式是在使⽤时才创建。
2. 饿汉式不存在线程安全问题,懒汉式存在线程安全问题。
3. 饿汉式存在浪费资源的可能。因为如果程序员⼀个对象实例都没有使⽤,那么饿汉式.⼆者最主要的区别在于创建对象的时机不同:饿
汉式是在类加载就创建了对象实例,⽽懒汉式是在使⽤时才创建。就不存在这个问题了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。