设计模式之单例模式
单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。
作用(解决的问题):保证1个类只有1个对象,降低对象之间的耦合度
优点:
1、提供了对唯一实例的受控访问;
2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象, 单例模式无疑可以提高系统的性能;
3、可以根据实际情况需要,在单例模式的基础上扩展做出双例模式,多例模式;
缺点:
1、单例类的职责过重,里面的代码可能会过于复杂,在一定程度上违背了“单一职责原则”。
2、如果实例化的对象长时间不被利用,会被系统认为是垃圾而被回收,这将导致对象状态的丢失。
实现:
饿汉式单例模式
1 public class Singleton1 2 { 3 //饿汉式单例模式实现(无论系统在运行时是否需要使用该单例对象,由于在类加载时该对象就需要创建,因此从资源利用效率角度来讲,饿汉式单例不及懒汉式单例) 4 private static Singleton1 mInstance = new Singleton1(); 5 6 private Singleton1() 7 { } 8 9 public static Singleton1 instance 10 { 11 get 12 { 13 return mInstance; 14 } 15 } 16 }
懒汉式单例模式
1 public class Singleton2 2 { 3 //懒汉式单例模式实现(在多线程的情况下有可能会出问题) 4 private static Singleton2 mInstance = null; 5 6 private Singleton2() 7 { } 8 9 public static Singleton2 instance 10 { 11 get 12 { 13 if (mInstance == null) 14 { 15 mInstance = new Singleton2(); 16 } 17 return mInstance; 18 } 19 } 20 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?