首页 > Windows开发 > 详细

设计模式之单例模式C#实现

时间:2019-11-29 01:09:00      阅读:82      评论:0      收藏:0      [点我收藏+]

前言

单例模式是老生常谈的一种设计模式,同时它是最简单也是最容易被忽视的一种设计模式。

下面是一些个人看法:

(1) 单例类需要保证自己的唯一性,同时也需要避免被继承,即需要使用sealed修饰;

(2) 饿汉式单例先创建好实例,懒汉式单例在需要的时候再创建实例,个人倾向于后者,因为单例模式一般管理着特定资源,懒汉式单例可以避免在不需要资源的时候也会创建实例;

(3) 懒汉式单例需要在多线程环境下保持唯一性,因此需要在创建实例时加锁,对私有实例做双重判空(加锁前、加锁后),避免创建多个实例;

(4) 对于资源依赖强的单例,需要使用Dispose模式(实现IDisposable接口)。

1、单例模式UML图

技术分享图片

2、传统单例C#实现

public class Singleton
{
    private static Singleton _instance;

    private Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new Singleton();
            }

            return _instance;
        }
    }
}

3、演进单例C#实现

public sealed class Singleton
{
    private static Singleton _instance;
    private static readonly object LockHelper = new object();

    private Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            if (_instance != null)
            {
                return _instance;
            }

            lock (LockHelper)
            {
                _instance = _instance ?? new Singleton();
            }

            return _instance;
        }
    }
}

设计模式之单例模式C#实现

原文:https://www.cnblogs.com/xhubobo/p/11955071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!