单例设计模式

单例设计模式

单例设计模式解决某个类在内存中只存在一个对象的问题。

方案一、饿汉单例设计模式

在该类一加载的时候就创建对象,且保证该类在内存中只有一个对象。
创建步骤:
1.私有化构造函数
2.声明本类的静态引用类型变量,并且使用该变量指向本类对象
3.提供一个公共的静态方法获取本类对象

例如:

class  Single{
    //声明本类的静态引用类型变量并指向本类对象
    Private  static  Single  single= new  Single();
    //私有化构造函数
Private  Single(){}
//提供一个公共的静态方法获取本类对象
public  static  Single  getInstance(){
     return  single;
}  
} 

方案二、懒汉单例设计模式

在类加载的时候不创建对象,什么时候使用什么时候创建,且保证该类在内存中只存在一个对象。
创建步骤:
1.私有化构造函数
2.声明本类的静态引用类型变量,但不创建对象
3.提供公共的静态的方法,获取本类对象。在获取之前判断是否已经创建了本类对象,如果创建了,那就直接返回对象;若没有创建,则先创建本类对象的实例,再返回。

例如:

 class  Single{
      //声明本类的静态引用类型变量,但不创建对象
      private  static  Single  single; 
      //私有化构造函数
      private  Single(){}
      //提供共有的静态方法,获取本类对象
      public  static  Single  getInstance(){
      //判断是否创建 若没创建进入锁中创建,反之返回该对象
        if(single==null){
           //锁是解决判断完创建对象时的线程安全问题
           Synchronized(“锁”){
             if(single==null){
               single=new  Single();
             }
           }
        }
      return  single;
     } 
}

推荐使用:饿汉单例设计模式
因为懒汉单例设计模式如果不加锁会存在线程安全问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值