问题标签 [singleton]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2341 浏览

java - Java 线程:指定应该在 run 函数中执行的内容

我有一个DBAdmin连接到数据库的类,然后还有一些其他类,例如等ArticleCategory它们对数据库执行某些查询。

我在 Swing 应用程序中使用这些类来构建一种小型 Intranet CMS 应用程序。

现在,Category该类有一堆static方法,例如addCategoryeditCategory等等,例如:

PSDBAdmin是一个Singleton Class,getInstance方法返回自调用的实例。

现在,我想要做的是数据库操作应该在与应用程序不同的线程中运行,并且我设法做了一些示例测试,这些测试在 a isrun时在方法中运行。Threadstarted

但问题是我无法指定在run启动线程时应该在方法中运行哪个方法。

从某种意义上说,例如当addCategory从外部调用时,该run方法应该调用addCategory它内部的方法。

有没有办法将函数作为回调参数从方法传递给 run 方法,addCategory以便它知道在启动新线程时应该在其中调用哪个函数?还是有一种完全不同的方式来实现我想要做的事情?

PS我在这一点上对Java“相当”陌生,尤其是多线程,所以我可能在这里遗漏了一些东西。

0 投票
4 回答
94 浏览

c# - 类访问问题

我知道这应该很简单,我应该知道,但它暂时让我难以理解。

我正在使用单例模式来帮助记录内容。然而,日志记录只发生在一个类中,单例基本上是一个布尔值的观察者,它打开和关闭日志文件。因为我不希望文件多次打开或关闭多次,所以我使用单例模式。但是,我不希望它成为一个全局值,而且我肯定不希望其他类,即使在访问它的包内也是如此。我怎样才能使它只有这一类使用它?

0 投票
3 回答
247 浏览

c# - 这是对 Singleton 的合法使用吗?

免责声明:这个问题不是特定于 ASP.NET)

我有一个可以模板化的控件,类似于登录控件:

模板化控件如下所示:

我的问题是:单身人士在这里是否合适?

单例与全局变量相关联;在这种情况下,没有状态。

单例也与硬编码的依赖关系相关联。在这种情况下,需要了解特定类型。

0 投票
8 回答
6626 浏览

language-agnostic - 我应该如何重构我的代码以删除不必要的单例?

当我第一次开始看到反单身的评论时,我很困惑。我在最近的一些项目中使用了单例模式,并且效果很好。这么多,事实上,我已经用过很多次了。

现在,在遇到一些问题后,阅读了这个SO 问题,尤其是这篇博文,我明白了我给这个世界带来的邪恶。

那么:如何从现有代码中删除单例?

例如:
在一个零售店管理程序中,我使用了 MVC 模式。我的模型对象描述了商店,用户界面是视图,我有一组控制器作为两者之间的联系。伟大的。除了我把 Store 变成了一个单例(因为应用程序一次只管理一个商店),我还把我的大部分 Controller 类变成了单例(一个 mainWindow、一个 menuBar、一个 productEditor...)。现在,我的大部分 Controller 类都可以像这样访问其他单例:

我应该改为:

  1. 为每个对象创建一个实例并将引用传递给需要访问它们的每个对象?
  2. 使用全局变量?
  3. 还有什么?

Globals 仍然很糟糕,但至少他们不会假装

我看到#1 很快导致了可怕的构造函数调用:

还有其他人经历过吗?让许多单独的类访问公共变量而不是全局或单例的 OO 方法是什么?

0 投票
2 回答
9802 浏览

design-patterns - 在不使用 Singleton 的情况下从非 bean 对象获取 Spring Application 上下文

我需要从非 bean 对象中获取 spring 应用程序上下文。在 SO 的另一个线程中,接受的答案建议使用单例来获取应用程序上下文。 获取 Spring 应用程序上下文

但是使用单例使我的代码更加耦合且可测试性更低,这是许多线程中讨论的常见问题(例如Singletons 有什么不好

问题是,是否有一种优雅的方法可以在不使用单例的情况下从非 bean 对象获取应用程序上下文?

0 投票
5 回答
5446 浏览

java - 通过 EJB 共享静态单例

我正在尝试在 Web 服务中创建缓存。为此,我创建了一个新的无状态 Bean 来将此缓存提供给其他无状态 bean。此缓存只是一个静态 ConcurrentMap,其中 MyObject 是一个 POJO。问题是似乎有不同的缓存对象。一个用于客户端 bean,另一个用于本地。

在这个分配之后,如果我从 CacheServiceBean 内部调用 cache.size,我得到 0。甚至可以通过 bean 共享静态单例吗?最后我决定使用数据库表,但我仍在考虑这个问题。

感谢您的回复。

0 投票
5 回答
1946 浏览

php - 多数据库连接类

如何使用单例模式创建多个数据库连接?或者也许有更好的方法,共享同一个类但有多个连接?

0 投票
6 回答
1459 浏览

.net - .NET 中的全局与单例

我这里有一个很常见的情况。多年来我一直没有发现我正在做的事情是否符合行业标准。考虑一个连接到数据库的应用程序,但是连接字符串而不是存储在某些文件/设置中作为命令行参数传递在启动时或在应用程序启动时浏览数据库。

那么有必要将该连接字符串保存在应用程序范围内的某个位置。我见过的最常见的方法是使用 get/set 方法保存连接字符串的模块或全局类。我会这样做的另一种方法是使用单例。我的 DAL 可以在需要时通过 GetConnectionString 方法访问连接字符串。

有更好的方法吗?

更新:我没有配置文件,即使我有,我也需要在应用程序实例的生命周期内读取一次连接字符串。您能否详细说明“将其注入任何类”部分

0 投票
5 回答
352 浏览

oop - 静态成员不使类本身成为(全局)对象吗?

每次我遇到单例模式或任何静态类(即具有(几乎)只有静态成员的类)的实现时,我想知道这是否实际上不是一个 hack,因此严重滥用类和实例的原则只是为了设计单个对象,而不是设计类和创建单个实例。对我来说,看起来类的静态成员通常会尝试向类添加一些他们实际上不应该拥有的特性,而是让它们自己反对。

但是这样实现单个对象真的很可取吗?还是您对事物的看法完全不同,并且认为此类静态类或单例与实际对象没有任何共同之处?

0 投票
4 回答
349 浏览

winapi - 是否有任何安全的方法可以在单例 COM 对象中保留来自另一个 dll 的 COM 对象的成员指针?

我最近遇到了一个COM使用单例类工厂的对象的问题,该对象的成员是指向在与单例对象不同的 DLL 中实现的其他 COM 对象的指针。

这些其他 COM 对象是由单例对象创建的,这是对它们的唯一引用。

由于单例对象在其模块被卸载之前永远不会被销毁,似乎正在发生的事情是有时在那个点上,实现其他 COM 对象(单例的成员)的 DLL 已经被卸载,在这种情况下会有当单例在其析构函数中释放对这些对象的引用时发生崩溃。

实现其他 COM 对象的 DLL 知道存在对对象的引用并S_FALSE从其DllCanUnloadNow方法返回。

但是,这似乎并不能阻止 DLL 总是被卸载。

是否有任何安全的方法可以在单例 COM 对象中保留来自另一个 dll 的 COM 对象的成员指针?