设计模式之单例模式
  1. 定义:

    确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

  2. 要素:

    • 私有的构造函数(防止外部实例化)
    • 指向自己实例的私有静态引用
    • 以自己实例为返回值的静态公有方法或者属性
  3. 优点:

    • 在内存中只有一个对象,节省内存空间
    • 避免频繁的创建销毁对象,可以提高性能
    • 避免对共享资源的多重占用
    • 可以全局访问
  4. 使用场景:

    • 需要频繁实例化然后销毁对象
    • 创建对象时耗时过多或者耗资源过多,但又经常用到的对象
    • 有状态的工具类对象
    • 频繁访问数据库或文件的对象
  5. 注意事项:

    • 只能使用单例累提供的方法得到单例对象,不要使用反射,否者将会实例化一个新对象。
    • 不要做断开单例类与类中静态引用的危险操作
    • 多线程使用单例使用共享资源时,注意线程安全问题
  6. 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;
}
}
}

  

 
 

最新文章

  1. Npoi导出Excel 实战篇(Webform)
  2. Linux Shell 脚本入门
  3. Protobuf从安装到配置整理帖
  4. DevExpress BarManager 部分用法
  5. C++ Templates基本知识
  6. soap 路由
  7. form表单中的enctype属性什么意思?
  8. sqlServer 取每组的前几条数据
  9. C语言基础学习基本数据类型-Char类型
  10. flask开发restful api系列(5)-短信验证码
  11. mac 系统开发android,真机调试解决方式(无数的坑之后吐血总结)
  12. Android根据Button状态(normal,focused,pressed)显示不同背景图片
  13. 用phpstudy搭建dedecms网站验证码出不来解决方案
  14. bootstrap 响应式工具
  15. 企业微信开发之向员工付款(C#)
  16. iOS pch文件创建使用,和info.plis文件路径改变,路径的设置
  17. Numpy 系列(八)- 广播机制
  18. 第一周——数据分析之表示 —— Numpy 数据存取与函数
  19. Kafka简单使用
  20. RxJAVA notes

热门文章

  1. Regular Expression Patterns
  2. Java8系列之重新认识HashMap(转)
  3. python第十八课——常用内置函数
  4. java.sql.SQLException: Incorrect string value: '\xE5\xB0‘
  5. HDU 5550 - Game Rooms(DP + 前缀和预处理)
  6. 20145203 实验五 Java网络编程及安全
  7. 企业案例 【故障修复】mysql主从故障解决过程
  8. C#动态加载/卸载Assembly的解决方案
  9. Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getUser' in class org.uncommons.reportng.ReportMetadata threw exception class java.net.UnknownHostException :
  10. Selenium 设置代理chrome