JAVA的单例设计模式

单例设计模式是把类的构造器私有化来不让别人new对象。然后创建一个静态并是自己类型的私有的属性,

get 方法让别人访问。

作用于经常创建对象但又没有持续使用的和有些对象在整个运行环境中只有一个对象的情况都适合使用单例模式。

饿汉式

是加载类的时候就直接创建对象在私有属性中来等待别人通过get方法来使用。这个是模式速度快但相对来说耗资源一些。

public class Danli{
     private Danli(){}
     private static Danli Danli=new Danli();
     public Danli getDanli(){
         return Danli;
    }
} 

懒汉式

是加载类时并没有创建对象,是等到比人调用它的时候才开始new对象。这样的单例省资源但速度较慢,因为有同步锁每个调用者都要排队进行。

public class Danli{
     private Danli(){}
     private static Danli Danli;
     public synchronized static Danli getDanli(){
            if(Danli==null){
                Danli Danli=new Danli();
            }
            return Danli;
     }
} 

懒汉式优化版

既然懒汉式的同步锁上的排队拖慢的速度,我们可以对此进行优化,在没有创建对象的时候的那写调用者需要排队外,如果对象已经创建了,这时就不用在排队了。因为想饿汉式一样,直接调用就行。

public class Danli{
     private Danli(){}
     private static Danli Danli;
     public static Danli getDanli(){
        //这里先判断Danli对象创建了没有,如果创建了就直接拿去用就行,如果没有创建就进入if里
         if(Danli==null){
            //同步放在这里,在这里排队
            synchronized(Danli.class){
               //进来之后再问一下是否已经创建出对象了,没有就创建
               if(Danli==null){
                    Danli Danli=new Danli();
                }
            }
        }
         return Danli;
    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值