• 设计模式之笔记--单例模式(Singleton)


    单例模式(Singleton)

    定义

           单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    类图

    描述

    类Singleton的构造函数的修饰符为private,防止用户使用new创建此类的实例;

    定义一个静态的GetInstance方法,负责创建唯一的实例,并允许用户访问它的唯一实例。

    应用场景

    懒汉模式:第一次调用的时候才产生一个新的实例,并在以后返回此实例。

    非线程安全的单例模式

        public sealed class Singleton
        {
            private static Singleton instance;
    
            /// <summary>
            /// 私有的构造函数
            /// </summary>
            private Singleton()
            {
    
            }
    
            public static Singleton GetInstance()
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }

    线程安全的单例模式,需加线程锁

        public sealed class Singleton
        {
            private static Singleton instance;
            private static readonly object syncFlag = new object();
    
            /// <summary>
            /// 私有的构造函数
            /// </summary>
            private Singleton()
            {
    
            }
    
            public static Singleton GetInstance()
            {
                lock (syncFlag)
                {
                    if (instance == null)
                    {
                        instance = new Singleton();
                    }
                }
                return instance;
            }
        }

    线程安全的单例模式,双重锁定

        public sealed class Singleton
        {
            private static Singleton instance;
            private static readonly object syncFlag = new object();
    
            /// <summary>
            /// 私有的构造函数
            /// </summary>
            private Singleton()
            {
    
            }
    
            public static Singleton GetInstance()
            {
                if (instance == null)
                {
                    lock (syncFlag)
                    {
                        if (instance == null)
                        {
                            instance = new Singleton();
                        }
                    }
                }
                return instance;
            }
        }

    饿汉模式:在程序开始的时候就会产生一个新的实例,并在以后返回此实例。

    线程安全的单例模式静态初始化

        public sealed class Singleton
        {
            private static readonly Singleton instance = new Singleton();
    
            /// <summary>
            /// 私有的构造函数
            /// </summary>
            private Singleton() 
            { 
    
            }
    
            public static Singleton GetInstance()
            {
                return instance;
            }
        }
  • 相关阅读:
    Class:向传统类模式转变的构造函数
    连载:面向对象葵花宝典:思想、技巧与实践(34)
    Java Web文件下载
    POJ 1469(裸二分匹配)
    查看程序占用tomcat内存情况
    《对象程序设计》课程 课程设计、考试安排 及 教师建议(2014.06.30修正)
    zoj 1880
    STM8S PWM 应用 呼吸灯
    Android开发系列(二十四):Notification的功能与使用方法
    HDU 4499 Cannon (暴力搜索)
  • 原文地址:https://www.cnblogs.com/zhou-yi/p/5333183.html
Copyright © 2020-2023  润新知