单例设计模式

本文介绍了单例设计模式的基本概念和应用场景,强调了保证单例的必要条件,包括构造器私有化和提供全局访问点。内容涵盖单例模式的实现步骤,包括私有构造函数、类内创建实例以及静态方法返回实例。还讨论了如何优化单例模式,如使用双重检查加锁法和同步锁。
摘要由CSDN通过智能技术生成

 

单例模式:确保一个类在内存中最多只有一个实例,并提供一个全局访问点

一、单例模式必备条件:

1.构造器私有化,杜绝外界使用new创建对象

2.获取单例对象的静态方法,多个线程来访问也是返回一个实例

二、使用场景

有些对象只需要创建一个,线程池、缓存、硬件设备;比如对于多个程序使用同一个配置信息对象时,就需要确保该对象的唯一性。

如何保证唯一性:

1)不允许其他程序用new创建该对象

2)在该类中创建一个本类实例

3)对外提供一个方法让其他程序可以获取该类对象

步骤:

1)私有化该类的构造函数

2)通过new在本类中创建一个本类对象

3)定义一个共有的方法,将创建的对象返回

三、代码演示,及优化

package com.qa.danli;
/**
 * 经典单例模式
 * 存在的问题:如果多线程多个实例会造成冲突,结果的不一致性等问题(比如第一个调用还没实例化完后第二个开始调用)
 */
public class DanLiFactory {
	private static DanLiFactory uniqeInstance = null;
	//构造器私有化,杜绝了外界使用new创建对象
	private DanLiFactory(){
		
	}
	//获取单例对象的静态方法,多个线程来访问也是返回一个实例
	public static DanLiFactory getInstance() {
		if(uniqeInstance == null) {
			uni
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值