java单例设计模式懒汉_Java设计模式之单例设计模式(懒汉、饿汉)

本文详细介绍了Java中的单例设计模式,包括饿汉式和懒汉式的实现方式,并提供了具体的代码示例。饿汉式单例在类加载时就完成了实例化,而懒汉式单例则在第一次调用时才进行实例化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[toc]

Java设计模式之单例设计模式(懒汉、饿汉)

相信面试过的初中级Java开发的朋友可能都有遇到过单例设计模式的笔试题吧,如果之前没有背下来或者不理解,可以看看下面这篇文章,应该足够应付笔试了?或许不够吧,权当学习了解一下吧。

单例模式的含义: 单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中, 应用该模式的这个类永远只有一个实例。即一个类永远只有一个对象实例。

单例的应用场景:在实际开发中,有很多业务对象永远只需要一个,无论启动多少次 我们只需要一个对象,例如任务管理对象,只需要一个对象。节约内存和性能。

饿汉单例设计模式

屁话上说,直接上代码吧。

package singleinstance;

import org.junit.Test;

/**

* ClassName: SingleInstanceHungry

* Description: 饿汉单例设计模式

* 在用类获取对象的时候,类已经提前创建好了

* 步骤:①定义一个类,构造器私有

* ②定义一个静态变量储存一个对象

* //③提供一个返回单例对象的方法

* Author: hhj

* Date: 19:58 2019/11/24

* Version: 1.0

*/

public class SingleInstanceHungry {

@Test

public void test01(){

SingleInstance01 s1 = SingleInstance01.INS;

SingleInstance01 s2 = SingleInstance01.INS;

System.out.println(s1); // singleinstance.SingleInstance01@4ee285c6

System.out.println(s2); // singleinstance.SingleInstance01@4ee285c6

System.out.println(s1 == s2); // true

}

@Test

public void test02(){

SingleInstance02 t1 = SingleInstance02.getInstance();

SingleInstance02 t2 = SingleInstance02.getInstance();

System.out.println(t1); // singleinstance.SingleInstance02@4ee285c6

System.out.println(t2); // singleinstance.SingleInstance02@4ee285c6

System.out.println(t1 == t2); //true

}

}

/**

* Description: 写法一

* @author: hhj

* @date: 20:07 2019/11/24

* @param:

* @return:

*/

class SingleInstance01{

public static final SingleInstance01 INS = new SingleInstance01();

private SingleInstance01(){}

}

/**

* Description: 写法二

* @author: hhj

* @date: 20:07 2019/11/24

* @param:

* @return:

*/

class SingleInstance02{

public static final SingleInstance02 INS = new SingleInstance02();

private SingleInstance02(){}

public static SingleInstance02 getInstance(){

return INS;

}

}

懒汉单例设计模式

package singleinstance;

import org.junit.Test;

/**

* ClassName: SingleInstanceLazy

* Description: 懒汉单例设计模式

* 在用类获取对象的时候,才会真正去创建一个对象,而不是提前创建好对象

* 步骤:①定义一个类,把构造器私有

* ②定义一个静态变量储存一个对象

* ③提供一个返回单例对象的方法:在这个方法里面判断是否存在对象了,

* 如果没有才创建,如果存在了就直接返回。这样保证了对象之创建一个对象

* Author: hhj

* Date: 19:59 2019/11/24

* Version: 1.0

*/

public class SingleInstanceLazy {

@Test

public void test(){

SingleInstance s1 = SingleInstance.getInstance();

SingleInstance s2 = SingleInstance.getInstance();

System.out.println(s1); // singleinstance.SingleInstance@4ee285c6

System.out.println(s2); // singleinstance.SingleInstance@4ee285c6

System.out.println(s1==s2); // true

}

}

/**

* Description: TODO

*

* @author: 饿汉单例设计模式

* @date: 20:22 2019/11/24

* @param:

* @return:

*/

class SingleInstance {

private static SingleInstance ins;

private SingleInstance(){}

public static SingleInstance getInstance() {

if (ins == null) {

ins = new SingleInstance();

}

return ins;

}

}

可能写的不是很深入,这里只是做一个简单介绍。 因为大学刚毕业的时候确实遇到过两次让我手写单例的情况。下次再遇到相信大家都能写出来的啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值