NRE的编程笔记

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

设计模式之单例模式

单例模式(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     }
复制代码

 

posted on   NRE  阅读(202)  评论(0编辑  收藏  举报

编辑推荐:
· .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 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示