单例模式

单例模式详解与应用场景
本文深入探讨单例模式的概念、优点、缺点及其适用场景,包括如何在高并发环境下实现线程安全,以及如何在系统中高效管理资源,避免资源浪费。

来源:《设计模式之禅

定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

类图:

233950_lox3_733161.png

单例模式代码:

public class Singleton {
	private static final Singleton singleton = new Singleton();
	
	/**
	 * 通过使用private的构造函数确保一个应用中产生一个实例
	 */
	private Singleton() {}
	
	/**
	 * 获取实例对象
	 * @return
	 */
	public static Singleton getInstace() {
		return singleton;
	}
	
	/**
	 * 单例类尽量使用static方法
	 */
	public static void action() {
		System.out.println("Singleton.action...");
	}
}

 

单例模式优点:

  1. 单例模式在内存中只有一个实例,减少内存开支,特别是一个对象需要频繁创建,销毁,而且创建或销毁的性能油无法优化。

  2. 当一个对象产生需要比较多的资源时,如读取资源,产生其他依赖对象时,通过应用程序启动时直接产生一个对象,然后永久驻留内存方式解决。

  3. 单例模式可以避免对资源的多重占用,例如写一个文件,由于只有一个实例在内存中,避免了同时对一个资源文件的同时写操作。、

  4. 单例模式可以在系统设置全局的访问点,优化和共享资源访问,例如一个单例类,负责所有数据表的映射出例。

单例模式缺点:

  1. 单例模式一般没有接口,扩展很困难。

  2. 单例模式不利测试。如果单例模式没有开发完成,没有接口不能使用mock的方式虚拟一个对象,不能进行测试。

  3. 单例模式与单一职责原则有冲突。

单例模式使用场景:

在一个系统中,要求一个类有且只有一个对象。如果出现多个会有“不良反应’。

  1. 要求生成唯一的序列号

  2. 整个项目需要一个共享访问点或共享数据。

  3. 创建一个对象需要消耗的资源过多。

  4. 需要定义大量的静态常量或静态方法。

单例模式注意事项:

  1. 高并发情况下,单例模式线程安全问题。


转载于:https://my.oschina.net/u/733161/blog/522383

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值