首页 > 其他 > 详细

单例设计模式

时间:2021-08-30 12:20:38      阅读:46      评论:0      收藏:0      [点我收藏+]

饿汉式

//饿汉式:创建对象实例的时候直接初始化  空间换时间
public class SingletonOne {
	//1、创建类中私有构造
	private SingletonOne(){
		
	}
	
	//2、创建该类型的私有静态实例
	private static SingletonOne instance=new SingletonOne();
	
	//3、创建公有静态方法返回静态实例对象
	public static SingletonOne getInstance(){
		return instance;
	}
}

懒汉式


//懒汉式:类内实例对象创建时并不直接初始化,直到第一次调用get方法时,才完成初始化操作
//时间换空间
public class SingletonTwo {
	//1、创建私有构造方法
	private SingletonTwo(){
		
	}
	
	//2、创建静态的该类实例对象
	private static SingletonTwo instance=null;
	
	//3、创建开放的静态方法提供实例对象
	public static SingletonTwo getInstance(){
		if(instance==null)
			instance=new SingletonTwo();
		
		return instance;
	}
}

比较:

  1. 饿汉式在类加载时创建实例,速度快,但占用空间。懒汉式在第一次使用时实例化,节省空间,但第一次创建需要时间。
  2. 饿汉式是线程安全的,懒汉式在第一次使用时实例化,存在线程风险

单例模式中的类成员是否需要加final修饰?
从语法层面说:饿汉式,加入final修饰对于模式实现本身没有影响。懒汉式加入final修饰会报错,因为懒汉式在定义成员变量未实例化。
从应用层面说:如果饿汉式的代码不仅涉及创建对象及返回的功能,还包含其他的功能,譬如资源回收等,就不能用final修饰,会影响功能实现。
总结:懒汉式不能加入final,如果在饿汉式代码中,对类实例只涉及创建和返回方法,可以加入final修饰。

单例设计模式

原文:https://www.cnblogs.com/yellowchives/p/15202193.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!