
【设计模式之禅】单例模式
发布日期:2021-05-10 05:48:21
浏览次数:21
分类:精选文章
本文共 1317 字,大约阅读时间需要 4 分钟。
单例模式
定义
单例模式是一种软件设计模式,确保一个类或对象只有一个实例,同时提供一个全局访问点以获取该实例。这种模式常用于资源管理和系统配置中,以减少内存占用和提高性能。通用代码示例
单例模式有两种主要实现方式:饿汉式和懒汉式。以下是两种实现方式的代码示例:/** * 饿汉式单例实现 */public class Singleton { private final static Singleton singleton = new Singleton(); private Singleton() { // 私有化构造,仅允许静态方法创建实例 } public static Singleton getInstance() { return Singleton.singleton; } // 其他方法应使用 static 关键字修饰 public static void doSomething() { // 方法代码 }}/** * 懒汉式单例实现(线程安全) */public class Singleton { private final static Singleton singleton = null; private Singleton() { // 私有化构造,仅允许静态方法创建实例 } public static Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; } public static void doSomething() { // 方法代码 }}
优点
- **资源优化**:通过保持实例坚持性减少内存占用,提升性能,适用于资源受限的环境。 - **消耗减少**:减少频繁创建和销毁对象的开销,尤其适用于资源访问频繁的场景。 - **高效管理**:确保资源唯一性,避免重复处理和潜在竞态条件。缺点
- **设计限制**:单例设计难以扩展,尤其是当需要使用接口或抽象类时,直接实现会导致多例困境。 - **测试复杂**:当服务依赖单例时,测试难以隔离单元,增加了测试复杂度。 - **职责冲突**:在某些情况下,单例可能违反单一职责原则,导致代码质量下降。实践应用
- **Spring框架**:Spring中的Bean单例管理是单例模式的典型应用,确保每个Bean有且仅有一个实例。 - **资源管理**:用于管理全局资源,如配置文件缓存、数据库连接池等'. - **系统服务**:创建全局服务实例,如日志记录、用户认证等。通过合理选择和使用单例模式,开发者可以根据具体需求优化资源利用和系统性能,但也需权衡其优缺点以确保设计的正确性和可维护性。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月19日 22时55分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Maven的基本了解
2019-03-15
Linux总结
2019-03-15
格式化的盘要如何恢复文件
2019-03-15
python线程join,同步
2019-03-15
DKT—Going Deeper with Deep Knowledge Tracing
2019-03-15
莫烦nlp-BERT双向语言模型
2019-03-15
Android与iOS系统默认的一些样式差异
2019-03-15
js高阶编程之---单例模式,XHR兼容 (惰性思想)
2019-03-15
JAVA Runnable方法
2019-03-15
JAVA 数据流练习之 统计文本中出现的字的次数
2019-03-15
JAVA后端编写的一些思路
2019-03-15
ThreadLocal原理、ThreadLocal内存泄漏
2019-03-15
poj2116——模拟
2019-03-15
sgu106——求解二元一次不定式(扩展欧几里得
2019-03-15
Educational Codeforces Round 98B——Toy Blocks
2019-03-15
Swap——二分图最大匹配
2019-03-15
kuangbin带你飞 KMP & 扩展KMP & Manacher总结(一)
2019-03-15
hdu1880——哈希+恶心输入输出
2019-03-15
PhotoshopCC2019制作表情包
2019-03-15
HTML5新特性drag API 实现图片拖拽功能(原生JS,Vue, React)
2019-03-15