设计模式的简介及单例模式之饿汉、懒汉

本文深入探讨软件开发中问题处理的设计模式,重点讲解23种设计模式的分类与应用,包括创建型、关系型和功能型模式。详细解析单例模式的实现方式,如饿汉式与懒汉式的优缺点及其实现代码。

设计模式:实际的软件开发中,问题处理的总结经验

23种设计模式:

分类:

  • 创建型:如何创建对象            
  • 关系型:对象多了,对象之间的依赖关系如何处理
  • 功能型:有对象了,如何去做功能

 

单例设计模式:

保证一个类的对象   唯一性

  1. 私有构造方法
  2. 在本类的成员位置,创建出自己类对象
  3. 提供公共方法,返回创建的对象
  • 单例模式之饿汉式

package shejimoshi;

/**
 * 单例模式之饿汉式
 * 单例模式在Java的java.lang.Runtime中
 */
public class Single {

	//私有构造方法
	private Single(){}
	//创建自己的类对象
	private static Single s = new Single();
	//一个公共的方法,返回本类的对象
	public static Single getInstance(){
		return s;
	}
}
  • 单例模式之懒汉式

/**
 * 单例模式之懒汉式--对象的延迟加载
 * 在多线程并发情况下有安全隐患
 * 当一个线程进入方法,判断s不为空,在没有new Single的时候,cpu调用其他线程也判断s
 * 就会出现多次new对象的情况
 */
public class Single{
	//私有构造方法
	private Single(){}
	//创建自己的类对象
	private static Single s = null;
	//返回本类对象
	public static Single getInstance(){
		if(null == s){
			s = new Single();
		}
		return s;
	}
	
}

改进

/**
 * 单例模式之懒汉式--对象的延迟加载
 * 安全的高效的应用
 * 加同步保证安全
 * 双重if提高程序的执行效率
 */
public class Single{
	//私有构造方法
	private Single(){}
	//创建自己的类对象
	private static Single s = null;
	//返回本类对象
	public static Single getInstance(){
		if(null == s){
			synchronized (Single.class) {
				if(null == s){
					s = new Single();
				}
			}
		}	
		return s;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值