C#单例模式初识

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

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

  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;
            }
        }
        }

  

 
 
posted @ 2016-07-16 11:34  wonder4  阅读(178)  评论(0)    收藏  举报