单例模式实现的方式以及使用场景

【概要】

   单例模式在项目设计和开发,以及Spring框架中使用的比较多,通过自己在项目中总结的经验和大家一起分享,希望对大家的学习和项目的设计会有所帮助。

【静态方法】

通过定义private static final service,类加载器加载类的时候开始创建对象,后面程序要是使用对象时直接从内存堆区域获取,定义private Service(){}不能通过new Service()去创建对象,从而实现了对象的第一次初始化,后面调用都是第一次的实例。

public class Service {
	
	private static final Service service = new Service();

	private Service(){};
	
	public static Service getInstance(){
		return  service;
	}
}

【单个元素的枚举】

 枚举的定义在项目中使用的比较多,列如:字段的状态,可以使用枚举来替代public static final 定义,写起了来比较方便简单,更加明确表示该字段的特性,定义枚举中每个元素都是实例对象,如果将枚举中只定义一个元素,提供公共的方法,就能够实现单例,而且这种方式是最好的也是最简单的

public enum Provider {
	INSTANCE;
	
	public void get(){
		System.out.println("Apple get menthod.");
	}
}

【使用场景】

 在一个项目中将一些属性:文件路径,连接数据库的用户名和密码等等其它可能会跟随服务器的不同,需要更改的配置,我们将这样的属性类定义成为一个项目的配置类,这个类只需要在项目启动时实例化一次性,在项目其它业务需要时只要从内存中拿出来,不需要重复在内存中开辟空间,这样可以减少不必要的内存开销,提高程序的性能,尽可能避免出现内存溢出问题(OutofMemoryException), Spring 框架中使用的比较频繁,在Spring配置文件定义一个<bean>时可以通过属性Scope来选择定义的bean是单例(Singleton),原型(Prototype),请求(Request),会话(Session)

单例:只有一个实例对象,需要使用时共享这个对象

原型:可以创建任意一个或者多个对象

请求:对象实例的生命周期在HTTP Request有效,响应后直接销毁对象,释放内存

会话:对象实例的生命周期在HTTP Session有效,Session失效后销毁对象,释放内存


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值