操作系统中存在多种单例设计的实例,如: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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)