设计模式之单例设计模式

目录

1.到底什么是设计模式?

2.什么是单例设计模式?

3.单列设计模式的两种实现方式

饿汉式

懒汉式(线程不安全)

4.线程安全的写法

饿汉式

懒汉式(线程安全)


1.到底什么是设计模式?

设计模式可以理解为别人成功的故事,通用的套路,前人的经验,设计模式是一种思想,没有具体的实现。

2.什么是单例设计模式?

打一个比方:世界上只有一个太阳,一个月亮,单列设计模式就是体现这个特点,程序中的对象只能被创建一次,并且

提供一个全局的访问点。

3.单列设计模式的两种实现方式

整体思路

  • 私有化该类的构造函数
  • 通过new在本类中创建一个本类对象
  • 定义一个公有的方法,将在该类中所创建的对象返回 

饿汉式

    private 单列模式()
	{
		
	}
    private static final 单列模式 instance = new 单列模式();  //构建单列
    //得到一个实例
    public static final 单列模式 getInstance()
    {
    	return instance;
    }

饿汉式,在类创建的时候就被初始化,线程安全

懒汉式(线程不安全)

  区别

  • 在类需要被创建的时候再初始化

这样节约了一些资源,但是线程不安全,因为创建的时候会对instance进行判断是否为null。

    private 单例模式线程安全二 (){};
    private static final 单例模式线程安全二 instance =null; //构建单列
    public static final 单例模式线程安全二 getInstance()
    {
    	
    		if(instance==null)
    		{
    	    return new 单例模式线程安全二();
    		}
    		else
    		{
    			return instance;
    		}
    	
    }
	

4.线程安全的写法

饿汉式

    private 单例模式线程安全一 (){};
    private static final 单例模式线程安全一 instance = new 单例模式线程安全一();  //构建单列
    public static final 单例模式线程安全一 getInstance()
    {
    	synchronized(单例模式线程安全一.class)
    	{
    	return instance;
    	}
    }

 

懒汉式(线程安全)

    private 单例模式线程安全二 (){};
    private static final 单例模式线程安全二 instance =null; //构建单列
    public static final 单例模式线程安全二 getInstance()
    {
    	synchronized(单例模式线程安全二.class)
    	{
    		if(instance==null)
    		{
    	    return new 单例模式线程安全二();
    		}
    		else
    		{
    			return instance;
    		}
    	}
    }

这种方式是兼顾效率和安全的。

JDK中的单例类:Runtime

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值