设计模式学习笔记-单例模式

Posted Rich.W

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式学习笔记-单例模式相关的知识,希望对你有一定的参考价值。

一、概述

      保证一个类仅有一个实例,并提供一个访问它的全局访问点。

二、模式中的角色

      Singleton:定义一个Instance操作,允许客户访问它的唯一实例,Instance是一个类操作;可能负责创建它自己的唯一实例;

三、UML类图

四、代码实现

     4.1 双重锁定

    /// <summary>
    /// 双重锁定
    /// </summary>
    public class Signleton
    {
        private static Signleton instance;

        private static readonly object _object = new object();

        private Signleton() { }

        /// <summary>
        /// 提供一个全局访问点
        /// </summary>
        /// <returns></returns>
        public static Signleton GetInstance()
        {
            if (instance == null)
            {
                lock (_object)
                {
                    if (instance == null)
                    {
                        instance = new Signleton();
                    }
                }
            }
            return instance;
        }

     4.2 静态初始化

    /// <summary>
    /// 静态初始化,密封类,以免被继承产生更多的实例
    /// </summary>
    public sealed class Signleton
    {
        private static readonly Signleton instance = new Signleton();

        private Signleton() { }

        /// <summary>
        /// 提供一个全局访问点
        /// </summary>
        /// <returns></returns>
        public static Signleton GetInstance()
        {
            return instance;
        }
    }

五、应用场景

     5.1 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。

     5.2 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时;

 

参考书籍《设计模式-可复用面向对象软件的基础》

 

以上是关于设计模式学习笔记-单例模式的主要内容,如果未能解决你的问题,请参考以下文章

单例模式学习笔记

设计模式学习笔记--单例模式

设计模式学习笔记-单例模式

单例设计模式详解+源代码+JDK源码应用——Java设计模式系列学习笔记

单例模式的学习笔记

设计模式:学习笔记——单例模式