day2_学习单例设计模式

正常情况下一个类可以创建多个对象,有时候我们想在整个程序运行过程中,让一个类只产生一个对象。怎么办呢 […]

2020年8月8日

正常情况下一个类可以创建多个对象,有时候我们想在整个程序运行过程中,让一个类只产生一个对象。怎么办呢?
目标:学习单例设计模式
单例设计模式的作用:让这个类再程序运行的过程中只能创建出一个对象,可以节省内存
单例设计模式的分类: 按创建对象的时机区分的
1.饿汉式单例 创建对象很早
2.懒汉式单例 创建对象很晚,使用时才创建

单例设计模式用途案例图:


单例设计模式实现步骤:
1.将构造方法私有
2.自己创建对象并保存
3.提供公共访问方式,返回这个单例对象
小结:
1.单例模式的作用:
保证程序运行的过程中某个类只创建唯一一个对象,可以节省内存
2.实现饿汉式单例的步骤:
1.将构造方法私有
2.自己创建对象并保存
3.提供公共访问方式,返回这个单例对象

随堂代码:

//测试类
public class Demo18 {
    public static void main(String[] args) {
//        AudioPlayer a1 = new AudioPlayer();
//        AudioPlayer a2 = new AudioPlayer();
//        AudioPlayer a3 = new AudioPlayer();

        AudioPlayer a1 = AudioPlayer.getInstance();
        AudioPlayer a2 = AudioPlayer.getInstance();
        System.out.println(a1 == a2); // true 是同一个对象

        VideoPlayer v1 = VideoPlayer.getInstance();
        VideoPlayer v2 = VideoPlayer.getInstance();
        System.out.println(v1 == v2); // true

        Runtime.getRuntime();
    }
}

// 懒汉式单例
public class VideoPlayer {
    // 1.将构造方法私有
    private VideoPlayer() {}

    // 2.使用成员变量保存单例对象
    private static VideoPlayer instance;

    // 3.提供公共访问方式,返回这个单例对象
    // 懒汉式单例有线程安全问题(了解)
    public static VideoPlayer getInstance() {
        // 如果对象不存在,创建一个对象
        if (instance == null) {
            instance = new VideoPlayer();
        }

        return instance;
    }
}

// 饿汉式单例(重要)
// instance: 表示实例(对象)
// 单例的音乐播放器
public class AudioPlayer {
    // 1.将构造方法私有
    private AudioPlayer() {}

    // 2.自己创建对象并保存
    private static final AudioPlayer instance = new AudioPlayer();

    // 3.提供公共访问方式,返回这个单例对象
    public static AudioPlayer getInstance() {
        return instance;
    }
}

 

打赏 0

共有 0 条评论

隐藏
变装