c# - 单例设计模式的优点是什么

标签 c# oop

每个人都知道如何为单例设计模式编写代码。例如

public class Singleton  
{  
    // Private static object can access only inside the Emp class.  
    private static Singleton instance;  

    // Private empty constructor to restrict end use to deny creating the object.  
    private Singleton()  
    {  
    }  

    // A public property to access outside of the class to create an object.  
    public static Singleton Instance  
    {  
        get  
        {  
            if (instance == null)  
            {  
                instance = new Singleton();  
            }  
            return instance;  
        }  
    }  
}  

很明显,当我们多次创建任何类的实例时,会为每个实例分配内存,但在单例设计模式的情况下,单个实例会为所有调用提供服务。

1) 我有点困惑,真的没有意识到原因是什么……什么时候应该选择单例设计模式。只是为了节省一些内存或任何其他好处。

2) 假设任何一个程序都可以有很多类,那么哪些类应该遵循单例设计模式?单例设计模式有什么优势?

3 在现实生活中的应用程序中,什么时候应该按照单例设计模式创建任何类? 谢谢

这里是线程安全的单例

public sealed class MultiThreadSingleton   
{   
    private static volatile MultiThreadSingleton instance;   
    private static object syncRoot = new Object();   

    private MultiThreadSingleton()   
    {   
    }   

    public static MultiThreadSingleton Instance   
    {   
        get   
        {   
            if (instance == null)   
            {   
                lock (syncRoot)   
                {   
                    if (instance == null)   
                    {   
                        instance = new MultiThreadSingleton();   
                    }   
                }   
            } 

        return instance;   
        }   
    }   
}

最佳答案

确保每次只有一个相同的对象实例。

举个例子,假设有一个公司应用程序,只有一个 CEO。如果你想创建或访问 CEO 对象,你应该每次都返回相同的 CEO 对象。

另外,在登录应用程序后,当前用户每次都必须返回相同的对象。

关于c# - 单例设计模式的优点是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901734/

相关文章:

c# - 为什么这段调整 .NET 窗体高度的代码会使窗体太小?

c# - JSON.net 父键

c# - 如何手动定位 ASP.Net Chart Legend?

c# - 在 VB.NET 与 C# 中实现属性的多级继承

oop - 抽象类、接口(interface)、mixins

c# - geckofx webbrowser不在Windows窗体c#中播放音频

c# - ping 大量 IP 地址的最快方法?

ruby-on-rails - 在 Ruby on Rails 中使用 send 有什么好处?

android - 如何在不违反核心 OO 原则的情况下使用 Fragments?

python - 在 Python 中将基类动态混合到实例中