认识设计模式(一)---单例模式(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();
    }
发布了41 篇原创文章 · 获赞 5 · 访问量 679

猜你喜欢

转载自blog.csdn.net/weixin_44823875/article/details/104784890
今日推荐