【发布时间】:2023-05-13 17:17:01
【问题描述】:
每个人都知道如何为 Singleton Design Pattern.say 编写代码
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;
}
}
}
【问题讨论】:
-
顺便说一句,您的示例不是线程安全的 - 这是一个示例,说明 not 如何实现单例模式,除非您真的不关心线程安全。
-
是的,我知道它不是线程安全的。我只需要知道什么时候应该像上面那样设计他的课程。单例设计模式有什么优势
-
我的意思是,如果你要写“每个人都知道如何为单例设计模式编写代码”,那么显示 bad 代码是个坏主意……
-
是的,我的问题已针对线程安全的单例类设计进行了更新。谢谢