饿汉式 and 懒汉式

单例设计模式

  1. 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提提供一个取得其对象实例的方法

  2. 单例模式有两种方式: 饿汉式 懒汉式

饿汉式

  1. 构造器私有化 (防止直接 new 一个新对象)

  2. 类的内部创建对象

  3. 向外提供一个静态的公共方法

public class ?{
       public static void mian(String[]args){
         // 通过方法可以获取对象
        girlfriend Instance=girlfriend.getInstance();
        System.out.println(Instance);
        
        System.out.println(girlfriend.i);  
        // 调用了静态i ,创建了对象,但可能没有使用,造成资源的浪费  即 饿汉式模式
       }
}
​
class   girlfriend{
        private String name;
        private static int i=100;
        // 为了能够在静态方法中,调用,返回gf对象,需要将其修饰为静态对象
        
        private static girlfriend gf=new girl friend("某某某");     // 类中创建对象
        
        private girlfrind(String name){   // 构造器私有
        this.name=name;
        }
        
        public static girlfriend getInstance(){   // 向外的静态公共方法
        return gf;
        }
}

懒汉式

懒汉式: 只有当用户使用getInstance时,才返回cat对象,然后再次调用时,会返回上次创建的cat对象

从而保证了单例

main {
  System.out.println(Cat.n1);    //   不使用就不创建对象
  
  Cat instance=Cat.geiInstance(); // 使用就创建对象  且再次调用还是上次创建的cat对象
  System.out.println(instance);
}
​
class  Cat{
       
       private String name;
       public static int n1=100;
       private static Cat cat; // 默认 为null
       
       private Cat(String name){
       this.name=name;
       }
       
       public static Cat getInstance(){
             if(cat==null){
                cat=new Cat("英短蓝猫");
             }
             return  cat;
       }
}

饿汉式和懒汉式的区别

  1. 二者最主要的区别在于 创建对象的时机不同: 饿汉式 是在类加载就创建了对象实例,而懒汉式是在是使用时创建

  2. 饿汉式 不存在线程安全问题,懒汉式 存在线程安全问题。

  3. 饿汉式 存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了。

  4. 懒汉式是使用时才创建,就不存在这个问题。

  5. 在javaSE标准类中,java.long.Runtime 就是经典的单例模式


 望大家多多点赞评论支持下 谢谢

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮虾_凡夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值