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

友情提醒

先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。

一、什么是设计模式

1)设计模式简述

设计模式就是设计出来的固定问题的解决方法,描述了在软件设计过程中的一些不断重复发生的问题和解决方案。遇到类似问题的时候可以直接使用现成的模式方案。

2)什么是单例设计模式

①单例模式中一个类只能有一个实例,由该单例类自行实例化并向整个系统提供这个实例。

3)单例设计模式思路

①要保证单例,就不能让外界随便创建对象,就需要将构造函数私有化,让外界无法访问构造函数。
②外界无法创建就只能在本类中创建这个唯一的对象。
③在本类创建对象需要成员变量接收这个对象,为了不让外界访问这个成员变量所以也用private修饰,在使用这个变量之前还没有对象,所以这个变量必须是静态的用static修饰。
④提供方法访问,只有访问这个方法之后才会有对象,所以这个方法应该是静态的

二、饿汉式

1)饿汉式单例设计模式的特点

①饿汉式模式的特点是类一旦加载就创建一个单例,保证在调用 getInstance (获取实例)方法之前单例就已经存在了。(比较饿,没喊就迫不及待的创建了)。
②好处:就算在多线程环境下,也一定可以保证对象是唯一的。弊端:创建比较早,有浪费内存的现象。

2)实现一个饿汉式单例设计

public class Test1{
	//1、私有化本类所有的构造方法
	private Test1(){}
	//2、直接在本类中创建唯一对象
	private static Test1 t1 = new Test1();
	//3、提供外界获取唯一对象的方法(公共的、静态的)
	public static Test1 getInstance(){
		return t1;
	}
}

三、懒汉式

1)懒汉式单例设计模式的特点

①懒汉式模式的特点是类加载时没有生成单例,只有当第一次调用 getlnstance (获取实例)方法 时才去创建这个单例。(比较懒别人喊一次才动一次?)。
②好处:不存在浪费内存的问题,弊端:在多线程环境下,可能不能保证对象是唯一的

2)实现一个懒汉式单例设计

public class Test2{
	//1、私有化本类所有的构造方法
	private Test2(){ }
	//private和static修饰的成员变量
	private static Test2 t2;
	//3、提供外界获取唯一对象的方法(公共的、静态的)
	public static Test2 getInstance(){
		if(t2 == null){
			//2、在本类中创建唯一对象
			t2 = new Test2();
		}
		return t2;
	}
}
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值