Java丨单例设计模式面试题丨饿汉式和懒汉式各自特点

饿汉式;

/**
 * 单例设计模式之饿汉式
 * 实现;
 * 1    定义一个私有的构造方法
 * 2    提供一个本类的对象的引用(静态)
 * 3    提供一个获取本类对象的引用的方法
 * 特点;
 * 在实例声明时就创建对象,生命周期长,占内存长,调用时效率高
 */
public class Singleton01 {
    private static Singleton01 instance=new Singleton01();
    private Singleton01(){}
    public static Singleton01 getInstance(){
        return instance;
    }
    public void print(){
        System.out.println("这是饿汉式");
    }
}

懒汉式;

/**
 * 设计模式之懒汉式
 * 实现;
 *  1    定义一个私有的构造方法
 *  2    提供一个本类的对象的引用(静态)
 *  3    提供一个获取本类对象的引用的方法
 *特点;
 * 生命周期短,占用内存时间短,第一次调用效率低(懒加载)
 * 通常我们在项目中采用懒汉式实现方案,就是在什么时候用,什么时候创建,缩短对象的生命周期
 * 那在什么情况下要用单例模式?
 * 1、工具类中,只有方法,没有属性(属性跟对象相关)
 * 2、会被频繁使用
 *
 * 目的是为了节省频繁的创建对象而对内存的消耗,从而提高效率
 * 创建对象也会消耗性能
 */

public class Singleton02 {
    private static Singleton02 instance;
    private Singleton02(){}
    public static Singleton02 getInstance(){
        if(instance==null){
            instance=new Singleton02();
        }
        return instance;
    }
    public  void print(){
        System.out.println("这是懒汉式");
    }
}

 

测试类;

/*
测试类
 */
public class SingletonTest {
    public static void main(String[] args) {
        Singleton01 s1=Singleton01.getInstance();
        s1.print();
        Singleton02 s2=Singleton02.getInstance();
        s2.print();
    }
}

问:能不能用静态方法+构造私有化来代替单例?
答:使用单例模式的好处是:我们可以充分利用面向对象的特性:继承,多态,重写这些都可以实现
而静态方法不依赖对象,因此,虽然可以继承,但不能重写,也无法实现多态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值