0
点赞
收藏
分享

微信扫一扫

2022Java学习笔记三十二(面向对象加强进阶:单例设计模式:饿汉单例,懒汉单例)

非宁静不致远 2022-02-19 阅读 32

2022Java学习笔记三十二(面向对象加强进阶:单例设计模式:饿汉单例,懒汉单例)

一、什么是设计模式
1、设计模式是一套被前人反复使用、多数人知晓、经过分类编目的代码设计经验总结,后来者可以直接拿来解决问题
2、设计模式是软件设计中常见的解决方案,好的设计模式可以进一步的提高代码的复用性
单例设计模式
可以保证系统中,应用模式的这个类永远只有一个实例,即一个类永远只能创建一个对象
单例的实现方式有很多种:目前学习饿汉单例模式
二、饿汉单例设计模式
在用类获取对象的时候,对象已经提前为你创建好了

定义单例类

package com.zcl.d5_singleinstance1;

public class Singlelnstance1 {
    /*
    目标:学会使用饿汉单例方法定义单例类
     */
    /*
    2、定义一个公开的静态成员遍历存储一个类的对象
    饿汉:在这里加载静态变量的时候就会创建对象了
     */
    public static Singlelnstance1 instance = new Singlelnstance1();

    /**
     * 1、把构造器私有起来
     */
    private Singlelnstance1() {

    }
}

调用单例类
得到的地址是一样的

package com.zcl.d5_singleinstance1;

public class Test {
    public static void main(String[] args) {
        // Singlelnstance1 s1 = new Singlelnstance1(); 会报错
        Singlelnstance1 s1 = Singlelnstance1.instance;
        Singlelnstance1 s2 = Singlelnstance1.instance;
        Singlelnstance1 s3 = Singlelnstance1.instance;
        System.out.println(s1==s3); // true
    }
}

三、懒汉单例设计模式

懒汉单例类

package com.zcl.d5_singleinstance1;

public class SingleInstance2 {
    // 目标:学会懒汉单例模式

    /*
    2、创建一个静态的成员变量存储本类对象,注意:此时不能初始化对象
     */
    private static SingleInstance2 instance; // null

    /*
    1、私有构造器
     */
    private SingleInstance2(){

    }
    /**
     3、定义一个方法,让其他地方可以调用获取一个对象
     */
    public static SingleInstance2 getInstance(){
        if(instance == null){
            // 第一次获取对象
            instance = new SingleInstance2();
        }
        return instance;
    }
}

测试懒汉类

package com.zcl.d5_singleinstance1;

public class Test2 {
    public static void main(String[] args) {
        SingleInstance2 s1 = SingleInstance2.getInstance();
        SingleInstance2 s2 = SingleInstance2.getInstance();
        SingleInstance2 s3 = SingleInstance2.getInstance();
        System.out.println(s1==s3); // true
    }
}

举报

相关推荐

0 条评论