创建型/单例模式/SingletonService.cs

(完整代码) 1KB

namespace DesignModeConsole.创建型.单例模式
{
    /// <summary>
    /// 单例模式服务
    /// </summary>
    public class SingletonService : IService
    {
        public void Main()
        {
            /*
             如何实现单例?
            ● 构造函数需要是private访问权限,这样子避免通过外部new创建实例
            ● 考虑对象创建时的线程安全问题
            ● 考虑是否支持延迟加载
            ● 考虑getInstance()性能是否高(是否加锁)
             */

            Test().GetAwaiter().GetResult();
        }

        private async Task Test()
        {
            await Task.Run(() =>
            {
                AddOrder();
            });

            await Task.Run(() =>
            {
                AddUser();
            });
        }

        public void AddOrder()
        {
            //ILogger logger = new Logger1();
            ILogger logger = Logger2.GetInstance();
            Console.WriteLine("addorder " + logger.GetHashCode());
            for (var i = 0; i < 100; i++)
            {
                logger.Log($"AddOrder {i}");
            }
        }

        public void AddUser()
        {
            //ILogger logger = new Logger1();
            ILogger logger = Logger2.GetInstance();
            Console.WriteLine("adduser " + logger.GetHashCode());
            for (var i = 0; i < 100; i++)
            {
                logger.Log($"AddUser {i}");
            }
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。