gpt4 book ai didi

c# - 单例数据访问层

转载 作者:行者123 更新时间:2023-11-30 15:50:43 26 4
gpt4 key购买 nike

在我们工作的数据访问层中,我们有这个标准实现,其中类是通过一个看起来像这样的单例公共(public)属性访问的:

public static CustomerController Instance
{
get
{
lock(singletonLock)
{
if( _instance == null )
{
_instance = new CustomerController();
}
return _instance;
}
}
}

现在,我明白了代码的作用,但我想知道为什么每次使用类时都创建类的实例而不是这样做?

最佳答案

编辑:糟糕,我没听懂“数据访问层”部分。但我也有一个这样的例子:如果你的多线程应用程序通过一个单例类汇集其所有的数据库调用,那么只有一个线程会同时访问数据库,从而避免竞争条件。

如果你在多线程应用程序中有一个日志记录机制,你用它来吐出所有异常并只写入信息(特别是对于服务,或者总是运行的应用程序,只要有事情发生就打印出状态),你会遇到文件锁定问题。我使用单例记录器类,这样只有一个线程可以访问记录器,其余线程将等到记录器可以自由地在文本文件中写入它们的行。

使用单例有很多很酷的理由,但我和你一样,直到我在多线程应用程序中遇到文件访问问题时才知道它们的用途。

关于c# - 单例数据访问层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com