java学习比较之单例设计模式——2021/03/20

单例设计模式

一、概念

1、设计模式

就是在实际编程过程中,逐渐总结出的一些解决问题的套路。

2、单例设计模式

在整个软件系统运行过程中,这个类只被实例化一次,只有一个实例(实例化对象)。以后不论在哪都只调用这一个实例。
例如:实例化对象的创建要消耗大量的时间和资源。

//Single.java
public class Single{
	public Single(){
		//假设构造中要执行1000行代码,要占用很大的资源,耗时很长(10s)
		//每一次new Single对象需要10s,运行1000行代码
		//像这种情况,就适合使用单例模式,只new一次对象,以后就一直使用这个对象
	}
}
  • 使用单例模式解决什么问题?一般都是new对象太费劲,或者频繁的new对象没必要

二、单例(Singleton)设计模式——饿汉式

//Single.java
public class Single{

	//私有的构造,构造方法私有化,调用这个类的人就不能直接使用new来创建对象
	private Single(){
	
	}

	//私有的Single类型的类变量
	private static Single single = new Single();

	public static Single getInstance(){
		return single;
	}
}
//Test.java+
	Single s = new Single();//编译报错
	Single single //编译报错
	Single s = Single.getInstance();

在这里插入图片描述

三、单例(Singleton)设计模式——懒汉式

最开始,对象时null,直到有第一个人调用,才new一个对象,之后所有调用的都用这个对象

//Single1.java
//懒汉式的单例模式
public class Single1{
	
	//先私有化构造方法,让外边不能直接new对象
	private Single1(){

	}

	private static Single1 s1 = null;

	public static Single1 getInstance(){
		if(s1 == null){
			s1 = new Single1();
		}
		return s1;
	}
}
//Test.java
	Single1 s = Single1.getInstance();
	Single1 s1 = Single1.getInstance();
	Single1 s2 = Single1.getInstance();
	Single1 s3 = Single1.getInstance();
	Singl1e s4 = Single1.getInstance();

在这里插入图片描述

四、饿汉式和懒汉式区别

  • 单例模式,软件的运行有且仅有一个实例化对象
  • 饿汉式和懒汉式的区别:
    就是什么时候new这个对象
    • 懒汉式:
      • 在第一次有人调用getInstance方法时来new对象,以后再有人调用getInstance方法就直接返回之前第一次new好的对象
    • 饿汉式:
      • 在类加载之后,还没有人调用的时候,就先new一个对象,以后不论谁来调用getInstance方法,都是直接返回之前new好的那个对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值