C#单例模式初识
2024-09-13 02:00:47
设计模式之单例模式
定义:
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
要素:
- 私有的构造函数(防止外部实例化)
- 指向自己实例的私有静态引用
- 以自己实例为返回值的静态公有方法或者属性
优点:
- 在内存中只有一个对象,节省内存空间
- 避免频繁的创建销毁对象,可以提高性能
- 避免对共享资源的多重占用
- 可以全局访问
使用场景:
- 需要频繁实例化然后销毁对象
- 创建对象时耗时过多或者耗资源过多,但又经常用到的对象
- 有状态的工具类对象
- 频繁访问数据库或文件的对象
注意事项:
- 只能使用单例累提供的方法得到单例对象,不要使用反射,否者将会实例化一个新对象。
- 不要做断开单例类与类中静态引用的危险操作
- 多线程使用单例使用共享资源时,注意线程安全问题
Demo:
public sealed class LogManager
{
private static readonly string logPah = "MyLog.txt";
private static LogManager logManager;
private static readonly object syncObj = new object();
private LogManager() { } public static LogManager Instance
{
get
{
if (logManager == null)
{
lock (syncObj) {
if (logManager == null)
{
logManager = new LogManager(); }
}
}
return logManager;
}
}
}
最新文章
- Npoi导出Excel 实战篇(Webform)
- Linux Shell 脚本入门
- Protobuf从安装到配置整理帖
- DevExpress BarManager 部分用法
- C++ Templates基本知识
- soap 路由
- form表单中的enctype属性什么意思?
- sqlServer 取每组的前几条数据
- C语言基础学习基本数据类型-Char类型
- flask开发restful api系列(5)-短信验证码
- mac 系统开发android,真机调试解决方式(无数的坑之后吐血总结)
- Android根据Button状态(normal,focused,pressed)显示不同背景图片
- 用phpstudy搭建dedecms网站验证码出不来解决方案
- bootstrap 响应式工具
- 企业微信开发之向员工付款(C#)
- iOS pch文件创建使用,和info.plis文件路径改变,路径的设置
- Numpy 系列(八)- 广播机制
- 第一周——数据分析之表示 —— Numpy 数据存取与函数
- Kafka简单使用
- RxJAVA notes
热门文章
- Regular Expression Patterns
- Java8系列之重新认识HashMap(转)
- python第十八课——常用内置函数
- java.sql.SQLException: Incorrect string value: '\xE5\xB0‘
- HDU 5550 - Game Rooms(DP + 前缀和预处理)
- 20145203 实验五 Java网络编程及安全
- 企业案例 【故障修复】mysql主从故障解决过程
- C#动态加载/卸载Assembly的解决方案
- Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getUser' in class org.uncommons.reportng.ReportMetadata threw exception class java.net.UnknownHostException :
- Selenium 设置代理chrome