JavaSE---8--单例设计模式

设计模式

设计模式:对问题解决方式的一种思想。

保证一个类在内存中的对象唯一性。
多个程序使用同一个配置信息对象,就要保证对象的唯一性。
如何保证对象唯一性?
1.不允许其他程序用 new创建该类对象。
2.在该类创建一个本类对象。
3.对外提供一个方法获取该对象。

饿汉式

类一加载对象已经存在。
/**

  • Created by zengjx on 2019/4/23.
    */
    //饿汉式
    class Single{
    private static Single single=new Single();;
    private Single(){
    }
    public static Single getInstance(){
    return single;
    }
    }
    public class SingleDemo {
    public static void main(String[] args){
    Single single =Single.getInstance();
    Single single2= Single.getInstance();
    if(single==single2){
    System.out.println(" 欧了 ");
    }
    }
    }
    栈 :main s1,s2
    getInstance 进栈 返回 结果0x0045 给s1 然后 getInstance 出栈
    getInstance 进栈 返回 结果0x0045 给s2 然后 getInstance 出栈

s1 ,s2 指向 堆对象。
Single 加载进内存
方法区 : Single s=null 堆: 对象 地址0x0045
getInstance()
在这里插入图片描述

懒汉式 面试知识较多

单例延迟加载, 只有调用方法时才创建对象。
后期被多线程并发访问时存在安全隐患。线程不安全。

//懒汉式
class  Single2{
    private  static  Single2  single2=null;
    private Single2(){
    }
    public static   Single2  getInstance(){
        if(single2==null){
            single2 =new Single2();
        }
        return  single2;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值