随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

操作系统中存在多种单例设计的实例,如:Windows系统的回收站,不论是桌面打开还是在文件夹中打开,都是打开的同一个回收站。

说明回收站这个对象就是单例实例。

 

 第一种单例设计:(饿汉式)

复制代码
package Demo_1_25_单例设计;

// 单例类
// 要求主类中只能有一个实例化对象:
// 在所需要的实例化类中实现定义一个本类对象属性,并将名称引用设置为static,final的常量
public class Singleton {
    private static final Singleton SINGLETON = new Singleton();  // 设置为属性,然后封装
    private Singleton() {}  // 构造方法私有化,外部无法调用构造方法,也就是无法从其它类产生实例化对象

    public static Singleton getSINGLETON() {    // 必须设置getter方法,因为属性被private所限制,所以即使是static修饰,也无法从外部类使用 类名. 的形式调用
        return SINGLETON;
    }

    public void print() {
        System.out.println("www");
    }
}
复制代码

  

 

第二种单例设计:(懒汉式)(需要考虑线程同步)

复制代码
package Demo_1_25_单例设计;

// 单例类
// 要求主类中只能有一个实例化对象:
// 在所需要的实例化类中实现定义一个本类对象属性,并将名称引用设置为static,final的常量
public class Singleton {
    private static Singleton singleton = new Singleton();  // 设置为属性,然后封装
    private Singleton() {}  // 构造方法私有化,外部无法调用构造方法,也就是无法产生实例化对象

    public static Singleton getSingleton() {        // 必须设置getter方法,因为属性被private所限制
        if (singleton == null){    // 只有在第一次才创建,其后对象都不为空
            singleton = new Singleton();
        }
        return singleton;
    }

    public void print() {
        System.out.println("www");
    }
}
复制代码

 

 

复制代码
package Demo_1_25_单例设计;

public class Main {
    public static void main(String[] args) {
        Singleton instance = null ; // 声明对象
//        private Singleton() {}  // 构造方法私有化
//        instance = new Singleton(); // 实例化出错
        instance = Singleton.getSINGLETON();
        instance.print();
    }
}
复制代码

 

posted on   时间完全不够用啊  阅读(77)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示