zoukankan      html  css  js  c++  java
  • 设计模式——单例模式

    1、什么是单例模式

    单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

    2、单例模式的特点:

    • 单例类只能有一个实例。
    • 单例类必须自己创建自己的唯一实例。
    • 单例类必须给所有其它对象提供这一实例。

    3、单例模式分为懒汉式和饿汉式

      3.1、懒汉式

        public class LazySingleton
        {
            //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
            private static LazySingleton _lazySingleton = null;
            private static object obj = new object();
    
            private LazySingleton()
            {
    
            }
    
            /// <summary>
            /// 懒汉式
            /// </summary>
            /// <returns></returns>
            public static LazySingleton GetInstance()
            {
                //有线程安全问题,需要加锁
                lock (obj)
                {
                    if (_lazySingleton == null)
                    {
                        _lazySingleton = new LazySingleton();
                    }
                }
                return _lazySingleton;
            }
        }

      3.2、饿汉式

        public class EagerSingleton
        {
            //在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
            private static EagerSingleton _eagerSingleton = new EagerSingleton();
            private EagerSingleton()
            {
    
            }
            /// <summary>
            /// 饿汉式
            /// </summary>
            /// <returns></returns>
            public static EagerSingleton GetInstance()
            {
                //静态,不用同步(类加载时已初始化,不会有多线程的问题)
                return _eagerSingleton;
            }
        }
  • 相关阅读:
    实战篇之实现 OutLook 中以 EDM 形式发送通知邮件
    ASP.NET MVC5 之路由器
    ASP.NET MVC5 之数据迁移
    说不出的烦
    ASP.NET MVC5 之 Log4Net 的学习和使用
    读取配置文件参数和文件路径
    序列化和反序列化示例
    面向对象之封装
    面向对象4之常用的乱七八糟
    面向对象三之继承和派生
  • 原文地址:https://www.cnblogs.com/rampb/p/9700013.html
Copyright © 2011-2022 走看看