设计模式(5)单例模式

模式介绍

单例模式是一种创建型设计模式,其中一个类只保证只有一个实例,该实例可以全局访问。

这意味着该模式强制特定对象不具有可访问的构造函数,并且对该对象执行的任何访问都是在该对象的同一实例上执行的。

示例

我们模拟一下餐馆里用于通知上菜铃铛,它在柜台上只有一个。

下面代码中syncRoot是为了线程安全。

/// <summary>
/// Singleton
/// </summary>
public sealed class TheBell
{
    private static TheBell bellConnection;
    private static object syncRoot = new Object();
    private TheBell()
    {

    }

    /// <summary>
    /// We implement this method to ensure thread safety for our singleton.
    /// </summary>
    public static TheBell Instance
    {
        get
        {
            lock(syncRoot)
            {
                if(bellConnection == null)
                {
                    bellConnection = new TheBell();
                }
            }

            return bellConnection;
        }
    }

    public void Ring()
    {
        Console.WriteLine("Ding! Order up!");
    }
}

总结

单例模式的对象只能是一个实例。它不是全局变量,许多人认为它们违反了软件设计的原则,但它确实有其用途,因此应谨慎使用。

源代码

https://github.com/exceptionnotfound/DesignPatterns/tree/master/Singleton

原文

https://www.exceptionnotfound.net/singleton-the-daily-design-pattern/

posted @ 2018-10-20 16:21  talentzemin  阅读(104)  评论(0编辑  收藏  举报