单例设计模式的三种方式

最近简单学习了单例设计模式,这里做一下笔记

java中的单例设计模式,要保证类在内存中只有一个对象,如何实现?
一般情况下,可以通过构造方法来创建类的不同实例,
所以可以通过私有构造方法
的方式来实现类中只有一个对象,著名的方式有两种,饿汉式,懒汉式

  • 方法1:饿汉式
    思路:
    • 1.私有构造方法,在本类中创建对象
    • 2.私有成员变量
    • 3.对外提供成员变量的get方法
      代码如下:
class Single{
	//1.私有构造方法,其它类不能访问该构造方法
	private Single(){	
	}
	//2.创建本类对象,s是一个成员变量,不能用对象调用,只能用类名调用,
	//但是类名点调用的话,属性有可能被修改
	//3.成员变量被私有,不能用类名点调用,只能用get方法访问
	private static Single s = new Single();
	public static Single getS() {
		return s;
	}
}
-	饿汉式因为一开始就在本类中创建对象,所以会占用内存,但是节省了时间
  • 懒汉式

    -	懒汉式是单例设计模式的延迟加载方式
    -	它的特点是一开始不在本类中创建对象,要经过判断才创建
    -	所以不占内存,但是速度慢
    

代码如下:

class Single{
	//1.私有构造方法,其它类不能访问该构造方法
	private Single(){
	}
	//2.声明一个引用,不去创建对象
	private static Single s;
	public static Single getS() {
		if(s==null){//判断,如果没有s,才创建
			s = new Single();
		}
		return s;
	}
}
-	懒汉式有一个缺陷:
-	就是在多线程的情况下,有可能会创建多个对象,有安全隐患,因此开发时不建议使用
  • 第三种方式:私有构造方法,本类中创建一个final修饰的对象
    代码:
class Single{
	//1.私有构造方法,其它类不能访问该构造方法
	private Single(){
	}
	//2.声明一个final修饰的引用,不可改变
	public final static Single s = new Single();
}
-	因为final修饰的对象不可被更改,所以也能保证内存种只有一个对象

以上就是单例设计模式中的3种实现方式,开发时一般用饿汉式
饿汉式懒汉式是最经典的实现方法,其实还有别的方法,以后有机会再接触吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值