认识设计模式(一)---单例模式(2)

(一)饿汉式(静态代码块)

(1)步骤如下:

  1. 构造器私有化(防止new再获取对象)
  2. 类的内部创建对象(但是不急着实例化)
  3. 在静态代码块里,对象实例化
  4. 向外暴露一个静态的公共方法,getInstance,这个唯一的方法用来获取对象实例

(2)单例类代码如下:

class Singleton02{
    //1-构造器私有化
    private Singleton02(){ }
    //***2-本类内部创建对象实例
    private static Singleton02 instance;
    //***3-在静态代码块中,创建单例对象
    static {
        instance=new Singleton02();
    }
    //4-提供一个公有的静态方法,返回实例对象
    public static Singleton02 getInstance(){
        return instance;
    }
}

(3)测试类代码如下

public class SingletonTest02 {
    public static void main(String[] args) {
        //优缺点跟之前一样,浪费内存
        Singleton02 instance01=Singleton02.getInstance();
        Singleton02 instance02=Singleton02.getInstance();
        System.out.println(instance01==instance02);
        System.out.println("instance01-hashCode="+instance01.hashCode());
        System.out.println("instance02-hashCode="+instance02.hashCode());
    }
}

(二)优缺点分析

同"饿汉式(静态变量)"

(三)与饿汉式(静态变量)的区别

private final static Singleton01 instance=new Singleton01();
改成了
private static Singleton02 instance;
static {
      instance=new Singleton02();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值