【知晓的丧day拯救计划】java基础学习笔记15 单例设计模式

笔记来自2019求知讲堂零基础Java入门编程视频教程 https://www.bilibili.com/video/av76235341

单例(Singleton)设计模式

设计模式就是在大量的实践中总结和理论之后优选的代码结构、编程风格以及解决问题的思考方式。简单来说,就是在编程过程中总结出来的一些解决问题的套路。

而单例设计模式,就是采取某些方法保证整个软件系统中,某个类只能被被实例化一次,系统中只能存在这一个实例对象,并且该类只提供一个取得其实例对象的方法。

一般单例模式是为了解决实例化太复杂,太过耗时耗资源的问题。或者频繁的new新对象没有必要。

单例模式的设计思路:

  • 首先保证构造方法是private的,这样就不能用new操作符在类外部产生对象
  • 但可以在类内部创建对象,类内部应该提供某个静态方法以返回类内部创建的对象
  • 静态方法只能访问类中的静态成员变量,所以指向类内部产生的该类对象的变量也必须定义成静态的。

实现方式——饿汉式

public class Single {
	//私有构造
	private Single() {		
	}
	
	//私有的single类型的类变量
	private static Single single = new Single();
	
	//公有的获取Single对象的方法
	public static Single getInstance() {
		return single;
	}
}

public class Test2 {
	public static void main(String[] args) {		
		Single single1 = Single.getInstance();
		Single single2 = Single.getInstance();
	}
}

饿汉式方法提前创建一个实例对象,需要的时候直接获取它即可。

实现方式——懒汉式

public class Single {
	
	//私有构造
	private Single() {		
	}
	
	//私有的single类型的类变量,最初为空
	private static Single single = null;
	
	//公有的获取Single对象的方法,首先判断要返回的对象是否为空
	public static Single getInstance() {
		if (single == null) {
			single = new Single();
		}
		return single;
	}
}

public class Test2 {
	public static void main(String[] args) {		
		Single single1 = Single.getInstance();
		Single single2 = Single.getInstance();
	}
}

懒汉式方法的最开始是没有实例对象的,直到有第一个人调用,才new一个对象,之后再调用的都使用这个对象。

综上可以看出,不论调用多少次getInstance()方法,指向的都是类中同一个静态变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值