正确的单例模式实现?

问题描述 投票:0回答:1

我有以下基于视频的单例实现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);
        }
    }
} 
c# object design-patterns nested singleton
1个回答
0
投票

完成这项工作的实际类可以保存单例实例,这里不需要包装类。

就这样做:

internal class COctopus
{
    private COctopus() { }

    public static COctopus Instance { get; } = new();

    public override ToString()
    {
        // Your stuff here
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.