我有以下基于视频的单例实现https://youtu.be/Q6HJpgdkAK8?si=k-9ksjHirLHq5Ne2我自己的实现的一些功能是不同的,但我想知道我的实现总体上是否正确.
我的单例类:
internal class CSingleton
{
// Aquí guardamos la única instancia que va a existir.
private static object instance;
// Creamos el constructor privado.
private CSingleton()
{
}
public static object ObtenInstancia()
{
if (instance == null)
{
instance = new COctopus();
}
// Aseguramos que se crea una sola vez.
return instance;
}
private class COctopus
{
private readonly string figure = "\t\t\t\t\t °°°°°°°°\r\n\t\t\t\t\t\t°°°°°°°°°°°°°°°°\r\n\t\t\t\t\t °°°°°°°°°°°°°°°°°°°°°°°°\r\n\t\t\t\t\t °°°°°°°°°°°°°°°°°°°°°°°°°°\r\n\t\t\t \t °°°°°°°°°°°°°°°°°°°°°°°°°°°°\r\n °°°°°°°°°°°°°°°°°°°°°°°°°°°°\r\n\t\t\t \t °°°°°°° °°°°°°° °°°°°°° \r\n\t\t\t °\t °°°°°°°°°°°°°°°°°°°° \t \r\n\t\t\t °°\t ° °°°°°°°°°°°°°°°° ° \r\n\t\t\t °°°\t °°\t\t°°°°°°°°°°°°° °° °\r\n\t\t\t °°°\t °°° °°°°°°°°°° °°° °°\r\n\t\t\t °°°° \t °°°°°°°° °°°\r\n\t\t\t °°°°°\t °°°°°\t\t °°°\r\n\t\t\t °°°°°\t °°°°\r\n\t\t\t °°°°° °°°°\t -\t - °°°° °°°°°\r\n\t\t\t °°°\t °°° / \\ / \\ °°°\t °°°°\r\n\t\t\t\t\t °°°\t | \\/ | °°° °°°\r\n\t\t\t\t\t °°\t \\ / °°\r\n\t\t\t\t\t °° \\ / °°\r\n\t\t\t\t\t ° \\ / °\r\n\t\t\t\t\t\t \\ /\t\r\n\t\t\t\t\t\t \\_/\t";
public override string ToString()
{
return String.Format(figure);
}
}
}
完成这项工作的实际类可以保存单例实例,这里不需要包装类。
就这样做:
internal class COctopus
{
private COctopus() { }
public static COctopus Instance { get; } = new();
public override ToString()
{
// Your stuff here
}
}