本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8250985.html,记录一下学习过程以备后续查用。

    一、引言

    设计模式的分类:

    1)依目的:

    创建型(Creational)模式:负责对象创建

    结构型(Structural)模式:处理类与对象间的组合

    行为型(Behavioral)模式:类与对象交互中的职责分配

    2)依范围:

    类模式:处理类与子类的静态关系

    对象模式:处理对象间的动态关系

    注:本系列文章依目的分类来进行。

    二、单例模式的介绍

    单例模式:英文名称--Singleton Pattern;分类--创建型;定义--一个类仅有一个实例。

    2.1、动机(Motivate)

    在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。

    如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这应该是类设计者的责任,而不是使用者的责任。

    2.2、意图(Intent)

    保证一个类仅有一个实例,并提供一个该实例的全局访问点。--《设计模式GoF》

    2.3、结构图(Structure)

C#设计模式学习笔记:(1)单例模式

    2.4、模式组成

    这个模式里面只有一个类型,就是Singleton类型,并且这个类只有一个实例,可以通过Instance()方法获取该类型的实例。

    2.5、代码实现

    既然是单实例,肯定会涉及到多线程的问题。

    2.5.1单线程Singleton模式的实现

C#设计模式学习笔记:(1)单例模式
    class Program
    {
        /// <summary>
        /// 单例模式的实现
        /// </summary>
        public sealed class Singleton
        {
            //定义一个静态变量来保存类的实例
            private static Singleton uniqueInstance;

            //定义私有构造函数,使外界不能创建该类实例。
            private Singleton()
            {
                Console.WriteLine("Singleton对象已被创建。");
            }

            /// <summary>
            /// 定义公有方法提供一个全局访问点,也可以定义公有属性来提供全局访问点。
            /// </summary>
            /// <returns></returns>
            public static Singleton GetInstance()
            {
                //如果类的实例不存在则创建,否则直接返回。
                if (uniqueInstance == null)
                {
                    uniqueInstance = new Singleton();
                }
                return uniqueInstance;
            }
        }

        static void Main(string[] args)
        {
            #region 单例模式
            var singleton = Singleton.GetInstance();
            Console.Read();
            #endregion
        }
    }
View Code

相关文章:

  • 2021-05-18
  • 2021-11-09
  • 2022-12-23
  • 2021-11-09
  • 2021-07-31
  • 2021-10-25
  • 2021-06-08
猜你喜欢
  • 2021-09-19
  • 2022-02-12
  • 2021-10-02
  • 2022-12-23
相关资源
相似解决方案