用ps如何做模板下载网站,网站审核备案表,深圳微网站建设,中国自助主做网站有哪些23种设计模式【创建型模式】详细介绍之【单例模式】 设计模式的分类和应用场景总结单例模式1. 概述2. 实现方式2.1 饿汉式单例模式2.2 懒汉式单例模式#xff08;非线程安全#xff09;2.3 懒汉式单例模式#xff08;线程安全#xff09; 3. 单例模式的优缺点3.1 优点3.2 缺… 23种设计模式【创建型模式】详细介绍之【单例模式】 设计模式的分类和应用场景总结单例模式1. 概述2. 实现方式2.1 饿汉式单例模式2.2 懒汉式单例模式非线程安全2.3 懒汉式单例模式线程安全 3. 单例模式的优缺点3.1 优点3.2 缺点 4. 使用场景5. 注意事项6. 总结 设计模式的分类和应用场景总结 可以查看专栏设计模式设计模式 单例模式
在软件设计模式中单例模式是一种常见且重要的创建型模式。它确保一个类只有一个实例并提供一个全局访问点。
1. 概述
单例模式属于创建型设计模式用于限制类的实例化次数为一个。它通常在需要管理全局状态或控制共享资源访问时发挥作用例如配置信息、日志记录器、数据库连接池等。单例模式能够有效地节省系统资源提高性能并且易于扩展和维护。
2. 实现方式
单例模式的实现方式通常包括以下几种
2.1 饿汉式单例模式
在类加载时即创建实例保证线程安全但可能会导致资源浪费。
public class Singleton {private static final Singleton instance new Singleton();private Singleton() {}public static Singleton getInstance() {return instance;}
}2.2 懒汉式单例模式非线程安全
延迟实例化在第一次使用时创建实例简单但非线程安全。
public class Singleton {private static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance null) {instance new Singleton();}return instance;}
}2.3 懒汉式单例模式线程安全
使用双重检查锁定Double-Checked Locking确保在多线程环境下仍然能够正确工作。
public class Singleton {private static volatile Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance null) {synchronized (Singleton.class) {if (instance null) {instance new Singleton();}}}return instance;}
}3. 单例模式的优缺点
3.1 优点
全局唯一实例 确保一个类只有一个实例存在避免了不必要的内存占用。延迟初始化 在需要时才进行实例化节省系统资源。线程安全部分实现 可以通过同步机制确保在多线程环境下的安全访问。
3.2 缺点
可能引起资源浪费 饿汉式单例在类加载时即创建实例可能导致不必要的资源占用。复杂度增加 实现线程安全的懒汉式单例需要考虑双重检查锁定等机制增加了复杂性。
4. 使用场景
单例模式适合以下场景
资源共享情况 需要共享访问的资源如线程池、缓存、对话框等。控制资源的使用 资源池管理、日志对象等。
5. 注意事项
在使用单例模式时需要注意以下几点
线程安全性 根据具体需求选择合适的实现方式确保在多线程环境下的安全访问。反射攻击 可以通过私有构造方法抛出异常或在创建第二个实例时抛出异常来防止反射攻击。序列化与反序列化 如果单例类可能会被序列化和反序列化需要实现 readResolve() 方法来避免创建新的实例。
6. 总结
单例模式是一种简单而强大的设计模式能够有效地管理全局状态和资源提高系统的性能和可维护性。在实际应用中根据具体需求选择合适的实现方式并注意线程安全和资源管理问题。 版权声明 原创博主牛哄哄的柯南 博主原文链接https://keafmd.blog.csdn.net/ 个人博客链接https://www.keafmd.top/ 看完如果对你有帮助感谢点击下面的点赞支持 [哈哈][抱拳] 加油
共同努力
Keafmd
感谢支持牛哄哄的柯南期待你的三连关注~~
keep accumulate for my dream【共勉】 ↓ ↓ ↓ ↓ ↓ ↓