您的位置:首页 > 游戏 > 手游 > 视频拍摄团队_成都品牌包装设计_如何分析百度指数_百度普通收录

视频拍摄团队_成都品牌包装设计_如何分析百度指数_百度普通收录

2025/4/11 4:06:16 来源:https://blog.csdn.net/weixin_45683778/article/details/146464531  浏览:    关键词:视频拍摄团队_成都品牌包装设计_如何分析百度指数_百度普通收录
视频拍摄团队_成都品牌包装设计_如何分析百度指数_百度普通收录

单例设计模式

  • 🚩什么是单例设计模式?
  • 🚩单例设计模式的特点
  • 🚩单例设计模式的结构
  • 🚩单例设计模式的优缺点
  • 🚩单例设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是单例设计模式?

单例模式(Singleton Pattern)创建型设计模式,它确保 一个类只有一个实例,并提供 全局访问点 以获取该实例。

使用场景

  • 需要保证全局唯一性的对象,如 日志管理器数据库连接池缓存管理器 等。

  • 需要共享资源,避免创建多个实例导致资源浪费。

  • 需要控制对象的访问,如 线程池,只能有一个管理者控制线程分配。

🚩单例设计模式的特点

  • 全局唯一性:整个应用程序中只能有一个实例。

  • 提供全局访问点:外部只能通过 getInstance() 获取实例。

  • 延迟加载(可选):可以实现 懒加载,只有在需要时才创建实例,减少资源占用。

  • 线程安全(可选):可以采用 同步机制 确保在多线程环境下仍然保证唯一性。

🚩单例设计模式的结构

单例模式主要包含以下部分:

  • Singleton(单例类):提供 私有构造方法,确保外部不能创建对象,并提供 公共 getInstance() 方法 访问唯一实例。

  • Client(客户端):通过 getInstance() 方法访问单例对象。

🚩单例设计模式的优缺点

✅ 优点

  • 全局唯一性:保证只有一个实例,避免资源浪费。

  • 控制实例个数:防止创建多个对象,影响性能或逻辑错误。

  • 提供全局访问点:可以随时访问,无需每次创建新实例。

❌ 缺点

  • 可能引起全局状态问题:单例是 全局对象,在某些情况下可能导致难以调试的状态问题。

  • 不适用于多线程(非线程安全实现):如果不加锁,多线程环境下可能会创建多个实例。

  • 增加代码复杂度:如果实现线程安全的单例模式(如 双重检查锁定),代码会变得更复杂。

🚩单例设计模式的Java实现

代码地址:GitHub

  • 创建单例类,instance 存储唯一实例,确保全局唯一性,private Singleton() 防止外部创建新实例,getInstance() 提供全局访问点。
/*** @author hanson* @description:* @date 2025-03-23 23:37:21* @version: 1.0*/
public class Singleton {private int number = 2025;public void setNumber(int number) {this.number = number;}public int getNumber() {return number;}// 1. 创建私有静态实例private static Singleton instance = new Singleton();// 2. 构造方法私有化,防止外部实例化private Singleton() {}// 3. 提供公共方法获取实例public static Singleton getInstance() {return instance;}
}
  • 测试单例模式
/*** @author hanson* @description:* @date 2025-03-23 23:39:39* @version: 1.0*/
public class SingletonPattern {public static void main(String[] args) {// Singleton singleton1 = new Singleton();  // 不能直接实例化Singleton singleton1 = Singleton.getInstance();Singleton singleton2 = Singleton.getInstance();Singleton singleton3 = Singleton.getInstance();System.out.println(singleton1.getNumber() + " " + singleton2.getNumber() + " " + singleton3.getNumber());singleton1.setNumber(528);System.out.println(singleton1.getNumber() + " " + singleton2.getNumber() + " " + singleton3.getNumber());}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • 私有静态变量 instance 存储唯一实例,确保全局唯一性。

  • 私有构造方法 private Singleton() 防止外部创建新实例。

  • 公有静态方法 getInstance() 提供全局访问点。

🚩总结

  • 单例模式(Singleton Pattern) 确保 一个类只有一个实例,并提供 全局访问点 获取该实例。

  • 适用于 日志管理器数据库连接池线程池等 需要全局唯一实例的场景。

  • Java 实现 需要 私有化构造方法,并提供 静态方法返回唯一实例

✅ 适用场景:

  • 需要 保证全局唯一性 的对象,如 日志管理器线程池数据库连接池 等。

  • 需要 共享资源,避免创建多个实例导致资源浪费。

  • 需要 控制对象的访问,防止多个实例同时操作数据。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com